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

时间:2017-05-10 21:44:45

标签: swift radix

我目前正在尝试使用该功能

Int(binaryString, radix: 2)

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

Int("1111111110011100", radix: 2)
如果它正在进行有符号的int转换,那么当我希望从它获得-100时,

返回65436。我没有真正使用二进制文件,所以我想知道我应该在这做什么?有没有一种内置于Swift3中的代码高效方法,可以为签名的内容执行此操作?我最初期望这个工作,因为它是一个Int构造函数(不是UInt)。

1 个答案:

答案 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,可以获得所需的结果。