我正在处理 Pebble 加速度计数据,需要将负整数的无符号表示形式转换为正常数字(例如,请注意前两个)。
[X: 4294967241, Z: 4294967202, Y: 22]
[X: 4294967278, Z: 4294967270, Y: 46]
[X: 4294967274, Z: 4294967278, Y: 26]
[X: 4294967221, Z: 85, Y: 4294967280]
[X: 4294967247, Z: 117, Y: 4294967266]
使用 Objective C 我已经成功地通过简单的方式做到了这一点[number intValue]
。然而,使用 Swift 我找不到一种方法来做到这一点。我试过了Int(number)
,但我得到相同的值。
你总是可以做一个unsafeBitcast
如果您收到错误的类型:
unsafeBitCast(UInt32(4294967009), Int32.self) // -287
例如,这将转换UInt32
to an Int32
EDIT: vacawama https://stackoverflow.com/users/1630618/vacawama展示了一个更好的解决方案,没有令人讨厌的unsafe
:
Int32(bitPattern: 4294967009)
多谢!改用这个,它很安全(显然)而且可能更快
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)