如何在Swift中将十六进制数转换为二进制数?

11

我有一个字符串变量: var str = "239A23F" 如何将这个字符串转换为二进制数? str.toInt() 不起作用。

1个回答

25

你可以使用Foundation框架中的NSScanner()

let scanner = NSScanner(string: str)
var result : UInt32 = 0
if scanner.scanHexInt(&result) {
    println(result) // 37331519
}

或者使用BSD库函数strtoul()

let num = strtoul(str, nil, 16)
println(num) // 37331519

自从 Swift 2 (Xcode 7) 开始,所有整数类型都有一个

public init?(_ text: String, radix: Int = default)

提供一个初始化器,以便提供纯Swift的解决方案:

let str = "239A23F"
let num = Int(str, radix: 16)

感谢您的回答。也许我漏掉了什么,但是“37331519”怎么是二进制的呢? - iOS Blacksmith
@iOSBlacksmith:这里的“二进制数”再次指的是一个整数(在内存中以二进制表示)。请注意,Int 符合 BinaryInteger 协议。- “整数”、“十进制”、“二进制数”等术语并不总是一致使用。- 这同样适用于您在此处的最后评论 https://dev59.com/uV8d5IYBdhLWcg3weiB-#26810937?noredirect=1#comment130003632_26810937。 - Martin R

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接