我有一个二进制字符串(例如“00100100”),我想将它转换为十六进制(例如“24”)。
在Swift中是否有编写将二进制转换为十六进制的方法?
func binToHex(bin : String) -> String {
// binary to integer:
let num = bin.withCString { strtoul($0, nil, 2) }
// integer to hex:
let hex = String(num, radix: 16, uppercase: true) // (or false)
return hex
}
UInt
的范围(32位或64位,取决于平台),这种方法就可行。它使用了BSD库函数strtoul(),该函数根据给定的基数将字符串转换为整数。strtoul
函数。对于无效的输入,返回nil
:func binToHex(_ bin : String) -> String? {
// binary to integer:
guard let num = UInt64(bin, radix: 2) else { return nil }
// integer to hex:
let hex = String(num, radix: 16, uppercase: true) // (or false)
return hex
}
let binaryInteger = 0b1
// Your binary number
let hexadecimalNum = String(binaryInteger, radix: 16)
// convert into string format in whatever base you want
更多信息请参考
let decimalInteger = 15 // prefix NONE
let binaryInteger = 0b10001 // prefix 0b
let octalInteger = 0o21 // prefix 0o
let hexadecimalInteger = 0x11 // prefix 0x