我在一個 iOS 專案中,我們將 incoming 轉換Data為byteArray. 它看起來像這樣:
class ViewController: UIViewController {
let data: Data? = nil
override func viewDidLoad() {
super.viewDidLoad()
guard let data = data else { return }
[UInt8](data).forEach { print("--Doing stuff here", $0) }
}
}
現在,有一個類似的專案正在Android studio使用Kotlin,它也可以轉換Data為byteArray. 但事實證明ByteArrayinKotlin不是(signed我unsigned猜是 Int8)。
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-byte/
表示一個 8 位有符號整數。
對我來說這沒有任何意義。在我的世界中,abyteArray是 的array一個uInt8。但也許我不太了解這些東西......愿意解釋任何人嗎?
無論如何,問題是我們需要取負數。顯然這適用于Kotlin′s signed Int但不適用于iOS因為uInt8不能存盤負數。
那么,我該如何轉換Data為Int8?我試過這樣的:
[Int8](data).forEach { print("--Doing stuff here", $0) }
但我收到一條錯誤訊息No exact matches in call to initializer
那我該怎么做呢?
uj5u.com熱心網友回復:
這是在Online Swift Playground上進行測驗的一種轉換方法:
let data = Data([1, 50, 215, 255])
var bytes: [Int8] = data.map { Int8(bitPattern: $0) }
print(bytes) // [1, 50, -41, -1]
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/534398.html
上一篇:如何僅在特定片段中啟用導航抽屜?
