簡體   English   中英

Swift 將字節數組轉換為字符串

[英]Swift converting Byte Array into String

我無法將下面的字節數組快速轉換為字符串。

let chars: [UInt8] =  [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0]

let datastring = NSString(data: chars, encoding: NSUTF8StringEncoding)

但在 android 中它運行良好,我不知道 swift 有什么問題。

[UInt8]不是NSData ,所以你不能使用NSString(data...初始值設定項

你可能會用

let chars: [UInt8] =  [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0]
let count = chars.count / sizeof(UInt8)
let datastring = NSString(bytes: chars, length: count, encoding: NSASCIIStringEncoding)

在 Swift 3 中,事情變得更容易了,因為原生String可以用字節序列初始化。

let datastring = String(bytes: chars, encoding: .utf8)

然而,這個例子沒有意義,因為它不代表一個字符串,所以datastring將為nil 使用有效數據,如

let chars : [UInt8] = [72, 101, 108, 108, 111]
let datastring = String(bytes: chars, encoding: .utf8) // "Hello"

在 Swift 3 中你可以使用這個:

import Foundation
let chars: [UInt8] =  [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0]
let string = String(data: Data(chars), encoding: .utf8)

let str = String(decoding: chars, as: UTF8.self) - 通過 0xfffd 更改錯誤的字節 let str = chars.map { String(UnicodeScalar($0)) }.joined()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM