我有一些二进制数据,将一个两个字节的值编码为带符号整数。
bytes[1] = 255 // 0xFF
bytes[2] = 251 // 0xF1
解码
这相当简单 - 我可以使用以下代码从这些字节中提取一个Int16
值:
Int16(bytes[1]) << 8 | Int16(bytes[2])
编码
这是我遇到问题的地方。我的数据规范大多要求使用UInt
,这很容易做到,但我在提取组成Int16
的两个字节时遇到了麻烦。
let nv : Int16 = -15
UInt8(nv >> 8) // fail
UInt8(nv) // fail
问题
我该如何提取组成一个 Int16
值的两个字节?