繁体   English   中英

在swift / objective-c中将任意二进制数据编码/解码为字符串

[英]Encoding/decoding arbitrary binary data to string in swift/objective-c

我需要将任意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是零。 我究竟做错了什么?

您的第一步已经在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序列。

简而言之:只需删除第三行和第二行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM