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.
<
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