
bytes[1] = 255 // 0xFFbytes[2] = 251 // 0xF1
解码
这很简单 – 我可以从这些字节中提取Int16值:
Int16(bytes[1]) << 8 | Int16(bytes[2])
编码
这是我遇到问题的地方.我的大多数数据规范都要求使用UInt,这很简单,但我无法提取组成Int16的两个字节
let nv : Int16 = -15UInt8(nv >> 8) // failUInt8(nv) //fail
题
如何提取构成Int16值的两个字节
你应该使用无符号整数:let bytes: [UInt8] = [255,251]let uInt16Value = UInt16(bytes[0]) << 8 | UInt16(bytes[1])let uInt8Value0 = uInt16Value >> 8let uInt8Value1 = UInt8(uInt16Value & 0x00ff)
如果您想将UInt16转换为等效的Int16,那么您可以使用特定的初始化程序:
let int16Value: Int16 = -15let uInt16Value = UInt16(bitPattern: int16Value)
反之亦然:
let uInt16Value: UInt16 = 65000let int16Value = Int16(bitPattern: uInt16Value)
在你的情况下:
let nv: Int16 = -15let uNv = UInt16(bitPattern: nv)UInt8(uNv >> 8)UInt8(uNv & 0x00ff)总结
以上是内存溢出为你收集整理的如何在swift中将Int16转换为两个UInt8字节全部内容,希望文章能够帮你解决如何在swift中将Int16转换为两个UInt8字节所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)