[英]Encoding/decoding arbitrary binary data to string in swift/objective-c
I need to encode/decode an arbitrary NSData object into a String/NSString. 我需要将任意NSData对象编码/解码为String / NSString。 Here's what I have for encoding:
这是我的编码方式:
var avatar64 = self.avatar.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.fromRaw(0)!);
let avatarData = NSData(base64EncodedString: avatar64, options: NSDataBase64DecodingOptions.fromRaw(0)!);
let avatar = NSString(data: avatarData, encoding: NSUTF8StringEncoding);
But avatar
is nil. 但是
avatar
是零。 What am I doing wrong? 我究竟做错了什么?
Your first step already creates a Base64-encoded string of the data in self.avatar
: 您的第一步已经在
self.avatar
创建了Base64编码的数据字符串:
var avatar64 = self.avatar.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.fromRaw(0)!);
Your second step decodes the Base64 string again, so that avatarData
contains the same binary data as your original self.avatar
: 您的第二步再次解码 Base64字符串,以便
avatarData
包含与原始self.avatar
相同的二进制数据:
let avatarData = NSData(base64EncodedString: avatar64, options: NSDataBase64DecodingOptions.fromRaw(0)!);
Finally, your third step tries to create a string from the original (binary) data: 最后,您的第三步尝试从原始(二进制)数据创建一个字符串:
let avatar = NSString(data: avatarData, encoding: NSUTF8StringEncoding);
This fails because the data is not a valid UTF-8 sequence. 这会失败,因为数据不是有效的UTF-8序列。
In short: Just remove the third and second line. 简而言之:只需删除第三行和第二行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.