【问题标题】:Convert Hexa to Decimal in Swift在 Swift 中将十六进制转换为十进制
【发布时间】:2018-01-21 21:38:43
【问题描述】:

我想将 Hexa 值转换为十进制。所以我试过这个。当值> 0时,它工作正常。但是当 value 为

let h2 = “0373”
let d4 = Int(h2, radix: 16)!
print(d4) // 883

let h3 = “FF88”
let d5 = Int(h3, radix: 16)!
print(d5) // 65416

当我通过FF88时,它返回65416。但实际上是-120。

现在,我正在关注这个Convert between Decimal, Binary and Hexadecimal in Swift 的答案。但它并不总是有效。

请查看此对话online。有关此对话的更多详细信息,请参见下图。

有没有其他解决方案可以从 Hexa 值中得到负小数?

任何帮助将不胜感激!

【问题讨论】:

    标签: swift hex decimal


    【解决方案1】:

    FF 8816 位有符号整数的十六进制表示 -120。您可以先创建一个无符号整数,然后将其转换 到具有相同位模式的签名对应方:

    let h3 = "FF88"
    let u3 = UInt16(h3, radix: 16)!  // 65416
    let s3 = Int16(bitPattern: u3)   // -120
    

    【讨论】:

      【解决方案2】:

      十六进制转换取决于整数类型 (signed , unsigned) 和大小 (64 bits , 32 bits , 16 bits . .),这是你错过的。

      源代码:

      let h3 = "FF88"
      let d5 = Int16(truncatingBitPattern: strtoul(h3, nil, 16))
      print(d5) // -120
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-28
        • 1970-01-01
        • 2015-04-21
        • 2023-04-05
        • 2018-09-04
        • 2017-07-31
        相关资源
        最近更新 更多