繁体   English   中英

将Swift数据转换为Int16

[英]Converting Swift Data into Int16

我有一台Java服务器,我在其中使用short[] ,并将其转换为byte[] (大端),然后将其发送到iOS设备。 我在将此字节数组(或Swift中的Data )转换为int16数组( [Int16] )时遇到麻烦。 我还想知道假设Java short类型的Swift等同于Swift中的Int16是否正确。

往返于数据的Swift数值类型相似,您可以使用withUnsafeBytes方法和UnsafeBufferPointer<Int16>来获取数据的16位整数视图。 然后使用Int16(bigEndian:)初始化程序将数字从big endian转换为主机字节序。 例:

let data = Data(bytes: [0, 1, 0, 2, 1, 0, 255, 255])
let i16array = data.withUnsafeBytes {
    UnsafeBufferPointer<Int16>(start: $0, count: data.count/2).map(Int16.init(bigEndian:))
}
print(i16array) // [1, 2, 256, -1]

Swift 5更新

let data = Data([0, 1, 0, 2, 1, 0, 255, 255])
let i16array = data.withUnsafeBytes {
        Array($0.bindMemory(to: Int16.self)).map(Int16.init(bigEndian:))
    }
print(i16array) // [1, 2, 256, -1]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM