Convert Hexa to Decimal in Swift

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.

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

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

When I am passing FF88, then it returns 65416. But actually it is -120.

  • NSString (hex) to bytes
  • How to calculate CRC-16 from HEX values?
  • How to convert hex number to bin in Swift?
  • How do I convert a UIColor to a hexadecimal string?
  • How to convert a text string to hex string?
  • Star micronics mpop iOS SDK - Save and print a character using the blank code page
  • Right now, I am following this Convert between Decimal, Binary and Hexadecimal in Swift answer. But it didn’t works always.

    Please check this conversation online. Please see following image for more details of this conversation.

    enter image description here

    Is there any other solution for get minus decimal from Hexa value.?

    Any help would be appreciated !!

    2 Solutions Collect From Internet About “Convert Hexa to Decimal in Swift”

    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
    

    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