0
我有一個Java服務器,我將其轉換爲short[]
,然後將它轉換爲byte[]
(Big Endian),然後將它發送到iOS設備。我無法將此字節數組(或Swift中的Data
)轉換爲int16
數組([Int16]
)。我還想知道,如果我認爲Swift中Java short
類型的Swift等價物是Int16
是否正確。將Swift數據轉換爲Int16
我有一個Java服務器,我將其轉換爲short[]
,然後將它轉換爲byte[]
(Big Endian),然後將它發送到iOS設備。我無法將此字節數組(或Swift中的Data
)轉換爲int16
數組([Int16]
)。我還想知道,如果我認爲Swift中Java short
類型的Swift等價物是Int16
是否正確。將Swift數據轉換爲Int16
同樣在round trip Swift number types to/from Data可以使用withUnsafeBytes
方法和UnsafeBufferPointer<Int16>
獲取數據的視圖 16位整數。然後使用Int16(bigEndian:)
初始化程序將 中的數字從大端數轉換爲主機字節數。例如:
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]
這可能有所幫助:https://stackoverflow.com/questions/38023838/round-trip-swift-number-types-to-from-data。 –
java'short'和swift'Int16'都是16位有符號整數。所以是的,他們是相同的。 – litelite
@MartinR感謝您的鏈接,雖然這不是我正在尋找的。 –