我需要将任意 NSData 对象编码/解码为 String/NSString。这是我的编码:
var avatar64 = self.avatar.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.fromRaw(0)!);
let avatarData = NSData(base64EncodedString: avatar64, options: NSDataBase64DecodingOptions.fromRaw(0)!);
let avatar = NSString(data: avatarData, encoding: NSUTF8StringEncoding);
但是 avatar
是 nil。我做错了什么?
最佳答案
您的第一步已经在 self.avatar
中创建了一个 Base64 编码的数据字符串:
var avatar64 = self.avatar.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.fromRaw(0)!);
您的第二步再次解码 Base64 字符串,以便 avatarData
包含相同的内容
二进制数据作为您的原始 self.avatar
:
let avatarData = NSData(base64EncodedString: avatar64, options: NSDataBase64DecodingOptions.fromRaw(0)!);
最后,您的第三步尝试从原始(二进制)数据创建一个字符串:
let avatar = NSString(data: avatarData, encoding: NSUTF8StringEncoding);
这失败了,因为数据不是有效的 UTF-8 序列。
简而言之:只需删除第三行和第二行。
关于ios - 在 swift/objective-c 中将任意二进制数据编码/解码为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24678704/