十六进制(长字符串)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 可以处理的。

您可以尝试使用 Decimalhttps://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