4

我正在尝试对 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 );
4

3 回答 3

8

NSData 中有一个内置函数

[data base64Encoding];
[data base64EncodedStringWithOptions:NSDataBase64Encoding76CharacterLineLength];
于 2013-10-21T11:54:48.030 回答
5

如果您仍然遇到问题,请试用此库: 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];
于 2012-08-06T18:38:02.523 回答
1

试试谷歌的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 变体。

于 2012-08-06T19:11:52.913 回答