从 swift 二进制字符串中获取有符号整数

Get signed integer from swift string of binary

我目前正在尝试使用功能

Int(binaryString, radix: 2)

将二进制字符串转换为Int。但是,此函数似乎总是将二进制字符串转换为无符号整数。例如,

Int("1111111110011100", radix: 2)

returns 65436 如果它正在进行带符号的 int 转换,我希望从中得到 -100。我并没有真正使用二进制,所以我想知道我应该在这里做什么?是否有一种内置于 Swift3 中的代码高效方式可以为带符号的整数执行此操作?我最初希望它能工作,因为它是一个 Int 构造函数(不是 UInt)。

玩转你可以得到想要的结果如下:

let binaryString = "1111111110011100"
print(Int(binaryString, radix: 2)!)
print(UInt16(binaryString, radix: 2)!)
print(Int16(bitPattern: UInt16(binaryString, radix: 2)!))

输出:

65436
65436
-100

期望的结果来自使用 UInt16.

的位模式创建带符号的 Int16