π¬ Question: How to use Python’s string formatting capabilities — f-strings, percentage operator, format()
, string.format()
— to convert an integer to a hexadecimal string?
Lowercase Solution without ‘0x’ Prefix
You can convert an integer my_int
to a simple lowercase hex string without '0x'
prefix by using any of the four string formatting variants—all based on the hexadecimal string formatting symbol x
:
f'{my_int:x}'
'%x'%my_int
'{:x}'.format(my_int)
format(my_int, 'x')
Here are those four ways exemplified converting the integer 255
to the hex string 'ff'
:
>>> my_int = 255 >>> f'{my_int:x}' 'ff' >>> '%x'%my_int 'ff' >>> '{:x}'.format(my_int) 'ff' >>> format(my_int, 'x') 'ff'
Lowercase Solution with ‘0x’ Prefix
You can convert an integer my_int
to a simple lowercase hex string with '0x'
prefix by using any of the four string formatting variants—all based on the hexadecimal string formatting symbol x
:
f'0x{my_int:x}'
'0x%x'%my_int
'0x{:x}'.format(my_int)
'0x' + format(my_int, 'x')
Here are those four ways exemplified converting the integer 255
to the hex string '0xff'
:
>>> my_int = 255 >>> f'0x{my_int:x}' '0xff' >>> '0x%x'%my_int '0xff' >>> '0x{:x}'.format(my_int) '0xff' >>> '0x' + format(my_int, 'x') '0xff'
Uppercase Solution without ‘0x’ Prefix
You can convert an integer my_int
to a simple uppercase hex string without '0x'
prefix by using any of the four string formatting variants—all based on the uppercase heXadecimal string formatting symbol X
:
f'{my_int:X}'
'%X'%my_int
'{:X}'.format(my_int)
format(my_int, 'X')
Here are those four ways exemplified converting the integer 255
to the hex string 'FF'
:
>>> my_int = 255 >>> f'{my_int:X}' 'FF' >>> '%X'%my_int 'FF' >>> '{:X}'.format(my_int) 'FF' >>> format(my_int, 'X') 'FF'
Uppercase Solution with ‘0x’ Prefix
You can convert an integer my_int
to a simple uppercase hex string with '0x'
prefix by using any of the four string formatting variants—all based on the uppercase heXadecimal string formatting symbol X
:
f'0x{my_int:X}'
'0x%X'%my_int
'0x{:X}'.format(my_int)
'0x' + format(my_int, 'X')
Here are those four ways exemplified converting the integer 255
to the hex string '0xFF'
:
>>> my_int = 255 >>> f'0x{my_int:X}' '0xFF' >>> '0x%X'%my_int '0xFF' >>> '0x{:X}'.format(my_int) '0xFF' >>> '0x' + format(my_int, 'X') '0xFF'
Fixed-Width Hex String with ‘0’ Padding
You can use the format specifer 02X
to convert an integer to a fixed-width hex string with 2 positions, and filling the remaining positions with '0'
symbols from the left. For example, the format specifier 03x
creates a hex string of width 3
.
Here’s how that works for f-strings:
>>> f'{my_int:02X}' 'FF' >>> f'{my_int:01X}' 'FF' >>> f'{my_int:05X}' '000FF'
Analogously, the same format specifier can be applied to all other string formatting capabilities such as format()
, string.format()
, and percentage operator:
>>> '0x' + format(my_int, '04X') '0x00FF' >>> '0x{:04X}'.format(my_int) '0x00FF' >>> '0x%04X'%my_int '0x00FF' >>> f'0x{my_int:04X}' '0x00FF'
This creates an uppercase, fixed-width hex string with 4
positions and padded with 0
s from the left.
π Recommended Tutorial: Python Integer to Hex String (Easy)

While working as a researcher in distributed systems, Dr. Christian Mayer found his love for teaching computer science students.
To help students reach higher levels of Python success, he founded the programming education website Finxter.com that has taught exponential skills to millions of coders worldwide. He’s the author of the best-selling programming books Python One-Liners (NoStarch 2020), The Art of Clean Code (NoStarch 2022), and The Book of Dash (NoStarch 2022). Chris also coauthored the Coffee Break Python series of self-published books. He’s a computer science enthusiast, freelancer, and owner of one of the top 10 largest Python blogs worldwide.
His passions are writing, reading, and coding. But his greatest passion is to serve aspiring coders through Finxter and help them to boost their skills. You can join his free email academy here.