在NSData和base64字符串之间转换

ahe*_*ang 41 objective-c nsstring nsdata ios

NSData和base64字符串之间进行转换的最简单,最快的代码是什么?我在SO上阅读了一堆解决方案,大多数都涉及添加另一个类等.我在这里找到了一个很好的解决方案,但它太复杂了.

Rya*_*sal 58

向下滚动到您链接的页面上的结论部分,然后下载提供的NSData + Base64文件.它是迄今为止我见过的最好的解决方案,非常容易使用.如果您可以了解有关Cocoa的任何信息,您可以学习使用该项目.


NSString *originalString = [NSString stringWithFormat:@"test"]; 
NSData *data = [NSData dataFromBase64String:originalString];  
NSLog([data base64EncodedString]); 
Run Code Online (Sandbox Code Playgroud)

以上将在将其转换为base64并返回到正常的未编码字符串后打印出原始字符串.

  • 我已经下载了两个,所以我需要将该项目添加到我的中,还是只需拖动NSData + Base64? (2认同)
  • 您想将这两个文件添加到项目中.通常当你看到像`NSData + Base64`这样的名字时,首先应该通过你的脑袋运行的是这是`NSData`类的一个类别.换句话说,你只使用`NSData`调用这些新方法,而不是一些新的`Base64`类. (2认同)

Six*_*tto 42

由于iOS的7,NSData现在直接提供了新的方法,这个功能-base64EncodedDataWithOptions:-base64EncodedStringWithOptions:.(这些选项允许您指定字符串是/应该是换行的,更好地处理电子邮件和面向用户的显示.)


kra*_*g22 35

您不需要任何自定义实现.从NSData创建base64将在其他答案中显示.有相反的方向.从Base64字符串到NSData:

 NSString *base64Encoded = @"some base64 string";
 NSData *nsdataFromBase64String = [[NSData alloc] initWithBase64EncodedString:base64Encoded options:0];
Run Code Online (Sandbox Code Playgroud)

  • 这是在iOS 7/OSX 10.9中添加的,它提供了这里提供的最佳解决方案.[此处的文档](https://developer.apple.com/library/ios/documentation/cocoa/Reference/Foundation/Classes/NSData_Class/index.html#//apple_ref/occ/instm/NSData/initWithBase64EncodedString:options :) . (6认同)