我目前正在尝试使用该功能
Int(binaryString, radix: 2)
将二进制字符串转换为Int。但是,此函数似乎始终将二进制字符串转换为无符号整数。例如,
Int("1111111110011100", radix: 2)
如果它正在进行有符号的int转换,那么当我希望从它获得-100时,返回65436。我没有真正使用二进制文件,所以我想知道我应该在这做什么?有没有一种内置于Swift3中的代码高效方法,可以为签名的内容执行此操作?我最初期望这个工作,因为它是一个Int构造函数(不是UInt)。
答案 0 :(得分:4)
在你周围玩耍可以获得如下所需的结果:
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
,可以获得所需的结果。