我有一个二进制字符串(例如“ 00100100”),我希望它以十六进制形式(如“ 24”)。
是否有编写方法在Swift中将Binary转换为十六进制?
可能的解决方案:
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()来根据给定的基数将字符串转换为整数。
对于较大的数字,您必须分块处理输入。您还可以添加输入字符串的验证。
Swift 3/4的更新: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
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句