我有一个二进制字符串(例如“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() https://developer.apple.com/library/ios/documentation/System/Conceptual/ManPages_iPhoneOS/man3/strtoul.3.html它根据给定的基数将字符串转换为整数。
对于更大的数字,您必须处理输入
分块。您还可以添加一个验证输入字符串的。
Swift 3/4 更新: The 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
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)