Complete guide to Python's hex function covering integer conversion, formatting, and practical examples of hexadecimal representation.
Last modified April 11, 2025
This comprehensive guide explores Python’s hex function, which converts integers to hexadecimal strings. We’ll cover basic usage, formatting, error handling, and practical examples of hexadecimal conversion.
The hex function converts an integer to a lowercase hexadecimal string prefixed with “0x”. Hexadecimal is base-16 number system using digits 0-9 and letters a-f.
Key characteristics: works only with integers, returns a string, handles both positive and negative numbers. The output is always prefixed with “0x”.
Here’s simple usage with different integers showing how hex converts positive, negative, and zero values to hexadecimal.
basic_hex.py
print(hex(10)) # 0xa print(hex(255)) # 0xff
print(hex(-10)) # -0xa print(hex(-255)) # -0xff
print(hex(0)) # 0x0
This example shows hex with different integer values. Positive numbers get standard conversion, negatives keep their sign, and zero becomes “0x0”.
The prefix “0x” indicates hexadecimal format, similar to how Python literals are written. Letters are always lowercase.
The hex function handles arbitrarily large integers, making it useful for cryptographic and low-level programming applications.
large_numbers.py
big_num = 2**64 - 1 print(hex(big_num)) # 0xffffffffffffffff
huge_num = 10**100 print(hex(huge_num)) # 0x1249ad2594c37ceb0b2784c4ce0bf38ace408e211a7caab24308a82e8f10000000000000000000000000
These examples demonstrate hex with very large integers. Python’s arbitrary-precision integers mean there’s no practical limit to size.
The hexadecimal representation grows with the number’s magnitude, showing Python’s ability to handle big numbers seamlessly.
You can make custom objects work with hex by implementing the index special method. This example creates a custom number class.
custom_hex.py
class CustomNumber: def init(self, value): self.value = value
def __index__(self):
return self.value
def __repr__(self):
return f"CustomNumber({self.value})"
num = CustomNumber(42) print(hex(num)) # 0x2a
The CustomNumber class implements index to return its integer value. When we call hex on an instance, Python uses this method.
This pattern is useful for numeric wrapper classes that need to support hexadecimal conversion while maintaining their type.
The hex function raises TypeError when used with non-integer types. This example shows proper error handling.
errors.py
try: print(hex(“hello”)) except TypeError as e: print(f"Error: {e}") # ‘str’ object cannot be interpreted as an integer
class NoIndex: pass
try: print(hex(NoIndex())) except TypeError as e: print(f"Error: {e}") # ‘NoIndex’ object cannot be interpreted as an integer
These examples demonstrate hex’s behavior with unsupported types. Strings and objects without index raise TypeError.
To make a class work with hex, implement index as shown in the previous example.
This example compares hex with other methods for hexadecimal string formatting.
formatting.py
num = 255
print(hex(num)) # 0xff
print(format(num, ‘#x’)) # 0xff print(format(num, ‘x’)) # ff print(format(num, ‘04x’)) # 00ff
print(f"{num:#x}") # 0xff print(f"{num:x}") # ff print(f"{num:04x}") # 00ff
This shows different ways to format numbers as hexadecimal strings. hex provides the simplest interface but less control than format or f-strings.
The format specifiers allow control over prefix inclusion, padding, and case, offering more flexibility than hex alone.
Use for readability: Prefer hex for simple conversions
Use format for control: When you need padding or uppercase
Implement index: For custom numeric types needing hex conversion
Handle errors: Catch TypeError when input type is uncertain
Document behavior: Clearly document index implementation
My name is Jan Bodnar, and I am a passionate programmer with extensive programming experience. I have been writing programming articles since 2007. To date, I have authored over 1,400 articles and 8 e-books. I possess more than ten years of experience in teaching programming.
List all Python tutorials.