一尘不染

在Swift中将有符号转换为无符号

swift

在C语言中,我可以使用数字做一些技巧:

uint8_t value = 0
int delta = -1
uint8_t result = value + delta  /* result will be 0xFF */

在Swift中有没有办法做到这一点?请注意,相同的方法无效:

let value: UInt8 = 0
let delta: Int = -1
var result: UInt8 = value + delta  // Error, even typecasting in different ways...

有没有一种方法可以让C的行为在Swift中减法?

谢谢!


阅读 419

收藏
2020-07-07

共1个答案

一尘不染

所有有符号和无符号整数类型都有一个bitPattern:构造函数,该构造函数从具有相同内存表示形式的有符号(反之亦然)创建无符号数字:

let delta: Int8 = -1
let result: UInt8 = UInt8(bitPattern: delta) // 0xFF = 255
2020-07-07