【发布时间】:2015-01-23 11:32:20
【问题描述】:
我正在寻找一种将 Int 的位值位转换为 UInt 的直接方法,反之亦然。例如(为简单起见,使用 8 位整数)我想实现以下目标:
let unsigned: UInt8 = toUInt8(-1) // unsigned is 255 or 0xff
let signed: Int8 = toInt8(0xff) // signed is -1
起初我提出了以下解决方案:
let unsigned = unsafeBitCast(Int8(-1), UInt8.self)
let signed = unsafeBitCast(UInt8(0xff), Int8.self)
但苹果在“unsafeBitCast()”文档中声明如下:
.. 注意:: 破坏了 Swift 类型系统的保证;与 极度关心。几乎总是有更好的方法来做任何事情。
谁有更好的方法?
【问题讨论】:
-
@Martin 是的,你是对的。我发誓我一直在 google 和 stackoveflow 中搜索这个,它从未出现过。
标签: ios macos swift casting binary