How to Print Variables in Hexadecimal Format in Python
This guide explains how to print variables in hexadecimal format (base-16) in Python. We'll cover how to print integers, strings, bytes objects, and lists of integers in hexadecimal, using built-in functions like hex()
, f-strings, and generator expressions.
Printing Integers in Hexadecimal
Using hex()
(with "0x" prefix)
The built-in hex()
function converts an integer to a lowercase hexadecimal string, prefixed with "0x":
my_int = 90
result = hex(my_int)
print(result) # Output: 0x5a
hex(my_int)
: This converts the integermy_int
to its hexadecimal string representation.
Using f-strings (without "0x" prefix)
For more control over the output format (and to omit the 0x
prefix), use f-strings:
my_int = 90
result = f'{my_int:x}' # Lowercase hex, no prefix
print(result) # Output: 5a
result = f'{my_int:X}' # Uppercase hex, no prefix
print(result) # Output: 5A
f'{my_int:x}'
: Formatsmy_int
as a lowercase hexadecimal string.f'{my_int:X}'
: Formatsmy_int
as an uppercase hexadecimal string.
Padding with Leading Zeros
To pad the hexadecimal representation with leading zeros, specify a width in the f-string:
my_int = 90
result = f'{my_int:04x}' # Lowercase hex, padded to 4 digits
print(result) # Output: 005a
my_int = 15
result = f'{my_int:04X}' # Uppercase hex, padded to 4 digits
print(result) # Output: 000F
f'{my_int:04x}'
: Pads with leading zeros to a width of 4, using lowercase hex.f'{my_int:04X}'
: Pads with leading zeros to a width of 4, using uppercase hex.
Printing Strings in Hexadecimal
To represent a string as a sequence of hexadecimal values (representing the Unicode code points of each character), you need to iterate over the string:
my_str = 'tutorialreference.com'
result = ' '.join(hex(ord(char)) for char in my_str) # with 0x prefix
print(result)
# Output: 0x74 0x75 0x74 0x6f 0x72 0x69 0x61 0x6c 0x72 0x65 0x66 0x65 0x72 0x65 0x6e 0x63 0x65 0x2e 0x63 0x6f 0x6d
result = ' '.join(f'{ord(char):x}' for char in my_str) # without 0x prefix
print(result)
# Output: 74 75 74 6f 72 69 61 6c 72 65 66 65 72 65 6e 63 65 2e 63 6f 6d
ord(char)
: Gets the Unicode code point (an integer) of each character.hex(ord(char))
: Converts the integer code point to its hexadecimal representation (with "0x" prefix).f'{ord(char):x}'
: Formats each character's Unicode code point as lowercase hex without the0x
prefix.' '.join(...)
: Joins the hexadecimal representations with spaces.
Printing Bytes Objects in Hexadecimal
For bytes objects, you can use the .hex()
method directly:
my_bytes = b'tutorialreference.com'
print(my_bytes.hex())
# Output: 7475746f7269616c7265666572656e63652e636f6d
my_str = 'tutorialreference.com'
result = ':'.join(hex(ord(char)) for char in my_str)
print(result)
# Output: 0x74:0x75:0x74:0x6f:0x72:0x69:0x61:0x6c:0x72:0x65:0x66:0x65:0x72:0x65:0x6e:0x63:0x65:0x2e:0x63:0x6f:0x6d
result = ':'.join(f'{ord(char):x}' for char in my_str)
print(result)
# Output: 74:75:74:6f:72:69:61:6c:72:65:66:65:72:65:6e:63:65:2e:63:6f:6d
- The
bytes.hex()
method returns a string containing two hexadecimal digits for each byte.
Printing Lists of Integers in Hexadecimal
To format a list of integers as hexadecimal strings, use a list comprehension or a generator expression with f-strings:
my_list = [3, 5, 90, 150, 185]
result = ' '.join(f'{num:02x}' for num in my_list) # Lowercase, padded
print(result) # Output: 03 05 5a 96 b9
f'{num:02x}'
: Formats each number as lowercase hex, padded with a leading zero to a width of 2.