在Swift中从Unsigned Int到负Int

Mar*_*cos 4 int unsigned objective-c swift

我正在使用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),但是我得到了相同的价值。

Kam*_*xom 5

unsafeBitcast如果您输入了错误的类型,则始终可以执行以下操作:

unsafeBitCast(UInt32(4294967009), Int32.self)  // -287
Run Code Online (Sandbox Code Playgroud)

例如,这将转换 UInt32Int32

编辑:vacawama显示了一个更好的解决方案,而不需要讨厌的东西unsafe

Int32(bitPattern: 4294967009)
Run Code Online (Sandbox Code Playgroud)

非常感谢!改用它,这是安全的(显然)并且可能更快

  • 也可以使用Int32(bitPattern:4294967009)来完成,它里面没有讨厌的“不安全”字样。:-) (2认同)