在NSData和base64字符串之间转换

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在NSData和base64字符串之间转换相关的知识,希望对你有一定的参考价值。

NSData和base64字符串之间进行转换的最简单,最快的代码是什么?我在SO上阅读了一堆解决方案,主要是他们参与添加另一个类等。我找到了一个很好的解决方案here但它太复杂了。

答案

向下滚动到the page you linkeddownload the provided NSData+Base64 files的结论部分。它是迄今为止我见过的最好的解决方案,非常容易使用。如果您可以了解有关Cocoa的任何信息,您可以学习使用该项目。


NSString *originalString = [NSString stringWithFormat:@"test"]; 
NSData *data = [NSData dataFromBase64String:originalString];  
NSLog([data base64EncodedString]); 

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

另一答案

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

另一答案

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

 NSString *base64Encoded = @"some base64 string";
 NSData *nsdataFromBase64String = [[NSData alloc] initWithBase64EncodedString:base64Encoded options:0];
另一答案

我最终使用了SUDZC提供的同一个类

实施很容易我先做了一个导入

 #import "NSData+Base64.h"

然后我就能调用我的数据了。

 NSData *data = [[NSData alloc] initWithData:[NSData dataWithBase64EncodedString:strData]];
另一答案

或者你可以看看(非常新的)CryptoCompatibility示例项目,我认为有一个用于base64操作的包装类。它是一个MacOS示例,但它使用库libresolve.dylib,我认为也可以在iOS上使用(至少在iOS7中看到它)。

另一答案

请注意,还有更多Base64格式。

例如,JWT使用URL safe format

以上是关于在NSData和base64字符串之间转换的主要内容,如果未能解决你的问题,请参考以下文章

NSData/UIImage 到字符串

将UIImage转换为数据URI

NSData 不接受有效的 base64 编码字符串

如何在 ios 中将 Base64 编码的 NSString 转换为字节数组(Java)?

如何快速将字节数组转换为 base64 字符串?

以哪种方式存储数据(图像)? NSData、字符串或可转换