How to convert a float into hex

This is a bit tricky in python, because aren’t looking to convert the floating-point value to a (hex) integer. Instead, you’re trying to interpret the IEEE 754 binary representation of the floating-point value as hex.

We’ll use the pack and unpack functions from the built-in struct library.

A float is 32-bits. We’ll first pack it into a binary1 string, and then unpack it as an int.

def float_to_hex(f):
    return hex(struct.unpack('<I', struct.pack('<f', f))[0])

float_to_hex(17.5)    # Output: '0x418c0000'

We can do the same for double, knowing that it is 64 bits:

def double_to_hex(f):
    return hex(struct.unpack('<Q', struct.pack('<d', f))[0])

double_to_hex(17.5)   # Output: '0x4031800000000000L'

1 – Meaning a string of raw bytes; not a string of ones and zeroes.

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)