【问题标题】:Hexadecimal (Long string)l to Binary十六进制(长字符串)l 转二进制
【发布时间】:2020-03-22 12:08:04
【问题描述】:

我正在尝试转换一个长的十六进制字符串,但总是为零,可能是因为字符超出范围。因此,如果您想从中获取二进制文件,请告诉我。

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

【问题讨论】:

    标签: ios swift binary hex


    【解决方案1】:

    一个长的十六进制字符串

    你问题的这一部分是重点。

    3c1878900216d211aa9e0924 远大于Int64 的处理能力。

    您可以尝试使用Decimalhttps://developer.apple.com/documentation/foundation/decimal

    或者只是字符串。

    【讨论】:

      【解决方案2】:

      您可以通过将每个字符转换为 4 位二进制值,然后连接二进制字符串值来做到这一点:

      let hexString = "3c1878900216d211aa9e0924"
      
      let binary = hexString.compactMap { Int(String($0), radix: 16) }
                            .map { ("000" + String($0, radix: 2)).suffix(4) }
                            .joined()
      print(binary)
      

      输出:

      001111000001100001111000100100000000001000010110110100100001000110101010100111100000100100100100
      

      【讨论】:

        猜你喜欢
        • 2017-03-22
        • 2020-01-04
        • 2016-06-02
        • 1970-01-01
        • 2010-11-17
        • 2014-10-30
        • 1970-01-01
        • 2019-08-23
        相关资源
        最近更新 更多