十六进制(长字符串)l 到二进制
Hexadecimal (Long string)l to Binary
我正在尝试转换一个很长的十六进制字符串,但总是得到零,可能是因为字符超出范围。因此,如果您有从中获取二进制文件的想法,请告诉我。
let hexString = "3c1878900216d211aa9e0924"
if let binaryInt = Int(hexString, radix: 16){
let binary = String(binaryInt, radix: 2)
print(binary)
}else{
print("Binary Integer getting nil")
}
预期结果:1111000001100001111000100100000000001000010110110100100001000110101010100111100000100100100100
a long hexadecimal string
你问题中的这部分是重点。
3c1878900216d211aa9e0924
远远大于 Int64
可以处理的。
您可以尝试使用 Decimal
:https://developer.apple.com/documentation/foundation/decimal
或者只是字符串。
您可以将每个字符转换为 4 位二进制值,然后连接二进制字符串值:
let hexString = "3c1878900216d211aa9e0924"
let binary = hexString.compactMap { Int(String([=10=]), radix: 16) }
.map { ("000" + String([=10=], radix: 2)).suffix(4) }
.joined()
print(binary)
输出:
001111000001100001111000100100000000001000010110110100100001000110101010100111100000100100100100
我正在尝试转换一个很长的十六进制字符串,但总是得到零,可能是因为字符超出范围。因此,如果您有从中获取二进制文件的想法,请告诉我。
let hexString = "3c1878900216d211aa9e0924"
if let binaryInt = Int(hexString, radix: 16){
let binary = String(binaryInt, radix: 2)
print(binary)
}else{
print("Binary Integer getting nil")
}
预期结果:1111000001100001111000100100000000001000010110110100100001000110101010100111100000100100100100
a long hexadecimal string
你问题中的这部分是重点。
3c1878900216d211aa9e0924
远远大于 Int64
可以处理的。
您可以尝试使用 Decimal
:https://developer.apple.com/documentation/foundation/decimal
或者只是字符串。
您可以将每个字符转换为 4 位二进制值,然后连接二进制字符串值:
let hexString = "3c1878900216d211aa9e0924"
let binary = hexString.compactMap { Int(String([=10=]), radix: 16) }
.map { ("000" + String([=10=], radix: 2)).suffix(4) }
.joined()
print(binary)
输出:
001111000001100001111000100100000000001000010110110100100001000110101010100111100000100100100100