Python Hexadecimal

VikkyB picture VikkyB · Feb 3, 2013 · Viewed 264k times · Source

How to convert decimal to hex in the following format (at least two digits, zero-padded, without an 0x prefix)?

Input: 255 Output:ff

Input: 2 Output: 02

I tried hex(int)[2:] but it seems that it displays the first example but not the second one.

Answer

Martijn Pieters picture Martijn Pieters · Feb 3, 2013

Use the format() function with a '02x' format.

>>> format(255, '02x')
'ff'
>>> format(2, '02x')
'02'

The 02 part tells format() to use at least 2 digits and to use zeros to pad it to length, x means lower-case hexadecimal.

The Format Specification Mini Language also gives you X for uppercase hex output, and you can prefix the field width with # to include a 0x or 0X prefix (depending on wether you used x or X as the formatter). Just take into account that you need to adjust the field width to allow for those extra 2 characters:

>>> format(255, '02X')
'FF'
>>> format(255, '#04x')
'0xff'
>>> format(255, '#04X')
'0XFF'