在我的專案中,我正在處理一個 UInt8 緩沖區。這是我的代碼:
let bufferSize = 4096
var buffer = [UInt8](repeating: 0, count: bufferSize)
現在我需要創建另一個 UTF8 格式的緩沖區來命令和接收新設備的回應,但我不確定如何處理此錯誤:
無法將“Int”型別的值轉換為預期的引數型別“UTF8”(又名“Unicode.UTF8”)
let bufferSize = 4096
var buffer = [UTF8](repeating: 0, count: bufferSize)
uj5u.com熱心網友回復:
UTF8 是一種編碼,這意味著一種將位元組轉換為實際字符的方法(主要是String類)。
因此,當您收到“UTF8”時,這意味著您實際上正在接收或發送位元組,當通過 UTF8 解碼時,這些位元組是字符或字串。
要管理位元組,您可以使用[UInt8]前面提到的陣列,也可以使用Data專用于此目的的類。
然后,您可以使用它從轉換[UInt8]為String :
let array : [UInt8] = [0x05, 0x26, 0xFD, 0xB5] // example
let data = Data(array)
let resultString = String(data: data, encoding: .utf8)
并從String為[UInt8]:
let string = "To be converted to UTF8 bytes..."
let data = string.data(using: .utf8)!
let array = [UInt8](data)
所以你的第一個代碼摘錄是正確的。但是你的第二個是不正確的。UTF8只是一個列舉(?)代表UTF8編碼本身,而不是一個字符或位元組,因此沒有興趣做[UTF8]陣列。
您的輸出可以只是一個String. 我不認為你有一個預期的引數是 swift 型別UTF8。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/533791.html
標籤:ios迅速缓冲
