iOS/Swift 庫提供了一個Data包含空終止字串的物件。String通過呼叫將其轉換為 a時String(data: dataInstance, encoding: .utf8),回傳String以"\0". 現在的問題是,如何將Data實體轉換為String不附加“\0”的實體?即你怎么能在最后省略空終止字符?
嘗試只是.trimmingCharacters(in: .whitespacesAndNewlines)沒有任何效果,因此非常感謝您的建議。謝謝你。
uj5u.com熱心網友回復:
一種可能的解決方案:確定終止零的索引,并僅轉換資料的前面部分:
let data = Data([65, 66, 0, 67, 0])
let end = data.firstIndex(where: { $0 == 0 }) ?? data.endIndex
if let string = String(data: data[..<end], encoding:.utf8) {
print(string.debugDescription) // "AB"
}
如果資料不包含空位元組,那么所有內容都將被轉換。
uj5u.com熱心網友回復:
您可以執行一些指標操作并使用init(cString:)初始化程式,它接受一個以空字符結尾的字串。
let resultString = data.withUnsafeBytes { buffer in
guard let pointer = buffer.baseAddress?.assumingMemoryBound(to: CChar.self) else {
return ""
}
return String(cString: pointer)
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/518620.html
標籤:迅速细绳
上一篇:在WooCommerce中發送電子郵件通知之前,使用哪個掛鉤來保存訂單元資料
下一篇:處理視圖加載時間并列印結果
