Convert Hexa to Decimal in Swift

后端 未结 2 2003
傲寒
傲寒 2020-12-22 10:29

I want to convert Hexa value into decimal. So I have tried this. When value is >0, then it is working fine. But when value is <0, then is returns wrong value.

<         


        
相关标签:
2条回答
  • 2020-12-22 10:47

    FF 88 is the hexadecimal representation of the 16-bit signed integer -120. You can create an unsigned integer first and then convert it to the signed counterpart with the same bit pattern:

    let h3 = "FF88"
    let u3 = UInt16(h3, radix: 16)!  // 65416
    let s3 = Int16(bitPattern: u3)   // -120
    
    0 讨论(0)
  • 2020-12-22 11:11

    Hexadecimal conversion depends on integer Type ( signed , unsigned ) and size ( 64 bits , 32 bits , 16 bits . . ) , this is what you missed .

    source code :

    let h3 = "FF88"
    let d5 = Int16(truncatingBitPattern: strtoul(h3, nil, 16))
    print(d5) // -120
    
    0 讨论(0)
提交回复
热议问题