我正在尝试使用函数
Int(binaryString, radix: 2)
将二进制字符串转换为整数。但是,此函数似乎总是将二进制字符串转换为无符号整数。例如,
Int("1111111110011100", radix: 2)
返回65436,如果它正在执行带符号的int转换,我希望从中得到-100。我没怎么用二进制,所以我想知道我应该怎么做?在swift3中是否有一种代码高效的方法可以对签名的int执行此操作?我最初希望它能工作,因为它是一个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个
所需的结果来自使用
Int16
的位模式创建带符号的UInt16
。