Mar*_*n R 31
更新为斯威夫特2:所有整数类型有
public init?(_ text: String, radix: Int = default)
Run Code Online (Sandbox Code Playgroud)
now now,根据给定的基础将字符串转换为整数:
let binary = "11001"
if let number = Int(binary, radix: 2) {
print(number) // Output: 25
}
Run Code Online (Sandbox Code Playgroud)
(上一个答案:)您可以简单地使用BSD库函数strtoul()
,该函数根据给定的基数将字符串转换为数字:
let binary = "11001"
let number = strtoul(binary, nil, 2)
println(number) // Output: 25
Run Code Online (Sandbox Code Playgroud)
Leo*_*bus 17
更新:Xcode 7.2•Swift 2.1.1
您可以使用名为strtoul的C++函数实现Martin R的Answer扩展,如下所示:
extension String {
var hexaToInt : Int { return Int(strtoul(self, nil, 16)) }
var hexaToDouble : Double { return Double(strtoul(self, nil, 16)) }
var hexaToBinary : String { return String(hexaToInt, radix: 2) }
var decimalToHexa : String { return String(Int(self) ?? 0, radix: 16)}
var decimalToBinary: String { return String(Int(self) ?? 0, radix: 2) }
var binaryToInt : Int { return Int(strtoul(self, nil, 2)) }
var binaryToDouble : Double { return Double(strtoul(self, nil, 2)) }
var binaryToHexa : String { return String(binaryToInt, radix: 16) }
}
extension Int {
var binaryString: String { return String(self, radix: 2) }
var hexaString : String { return String(self, radix: 16) }
var doubleValue : Double { return Double(self) }
}
"ff".hexaToInt // "255"
"ff".hexaToDouble // "255.0"
"ff".hexaToBinary // "11111111"
"255".decimalToHexa // "ff"
"255".decimalToBinary // "11111111"
"11111111".binaryToInt // "255"
"11111111".binaryToDouble // "255.0"
"11111111".binaryToHexa // "ff"
255.binaryString // "11111111"
255.hexaString // "ff"
255.doubleValue // 255.0
Run Code Online (Sandbox Code Playgroud)