簡體   English   中英

將base64解碼的NSData轉換為NSString

[英]convert base64 decoded NSData to NSString

我正在嘗試編碼和解碼base64數據。 但是在解碼base64數據時,它會返回一組十六進制值,但我無法使用NSlog顯示或打​​印輸出到原始可讀字符串。 下面的代碼無法打印任何內容,只是空的。

有人可以幫忙嗎? 謝謝>>

NSString* msgEncoded = [[NSString alloc] initWithFormat:@"Q1NNKE1DTC9TTUEgUkNWL2FkbWluQHNldGVjcy5jb20gT1JHLyBUVkIvNDNkYzNlMzQwYWQ3Yzkp:"];  
NSData* decoded = [[NSData alloc] initWithData:[self decodeBase64WithString:msgEncoded]];
NSString* plainString = [[NSString alloc]initWithData:decoded encoding:NSUTF8StringEncoding];
NSLog(@"\n Decoded string:  %@ \n", plainString );

NSData中有一個內置函數

[data base64Encoding];
[data base64EncodedStringWithOptions:NSDataBase64Encoding76CharacterLineLength];

如果您仍有問題,請試用此庫: https//github.com/l4u/NSData-Base64

像這樣使用它:

#import "NSData+Base64.h"

NSData *someData  //load your data from a file, url or photo as needed
NSData *file = [NSData dataWithContentsOfFile:@"mytextfile.txt"];
NSData *photo = UIImageJPEGRepresentation(self.photo.image,1);

//encode it
NSString *base64string = [photo base64EncodedString];
NSString *base64file = [file base64EncodedString];

//decode it
NSData *back = [NSData dataFromBase64String:base64string];

試試Google的GTMStringEncoding類。 你也需要GTMDefines.h

GTMStringEncoding *coder = [GTMStringEncoding rfc4648Base64StringEncoding];
NSString *encodedBase64 = [coder encodeString:@"Mary had a little lamb"];

// will contain the original text
NSString *decodedText = [coder decodeString:encodedBase64];

要將NSData*編碼為NSString*並返回NSData* ,請使用encode: + decode:方法而不是encodeString: + decodeString: .

作為獎勵,您可以獲得許多其他有用的編碼,例如Base64的url-safe變體

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM