簡體   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