从 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
我目前正在尝试使用功能
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