Python hex 函数
上次修改时间:2025 年 4 月 11 日
本综合指南探讨了 Python 的 hex
函数,该函数将整数转换为十六进制字符串。我们将介绍基本用法、格式化、错误处理以及十六进制转换的实际示例。
基本定义
hex
函数将整数转换为带有 "0x" 前缀的小写十六进制字符串。十六进制是使用数字 0-9 和字母 a-f 的 16 进制数字系统。
主要特征:仅适用于整数,返回字符串,处理正数和负数。输出始终以 "0x" 为前缀。
基本整数转换
这是一个简单的用法示例,使用不同的整数展示了 hex
如何将正数、负数和零值转换为十六进制。
# Positive integers print(hex(10)) # 0xa print(hex(255)) # 0xff # Negative integers print(hex(-10)) # -0xa print(hex(-255)) # -0xff # Zero print(hex(0)) # 0x0
此示例展示了带有不同整数值的 hex
。 正数进行标准转换,负数保留其符号,零变为 "0x0"。
前缀 "0x" 表示十六进制格式,类似于 Python 字面量的书写方式。字母始终为小写。
大整数转换
hex
函数可以处理任意大的整数,使其适用于密码学和底层编程应用。
# Very large numbers big_num = 2**64 - 1 print(hex(big_num)) # 0xffffffffffffffff # Extremely large numbers huge_num = 10**100 print(hex(huge_num)) # 0x1249ad2594c37ceb0b2784c4ce0bf38ace408e211a7caab24308a82e8f10000000000000000000000000
这些示例演示了 hex
如何处理非常大的整数。 Python 的任意精度整数意味着大小没有实际限制。
十六进制表示随数字的大小而增长,显示了 Python 无缝处理大数字的能力。
自定义对象转换
您可以通过实现 __index__
特殊方法使自定义对象与 hex
一起使用。 此示例创建一个自定义数字类。
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
CustomNumber 类实现了 __index__
以返回其整数值。 当我们在实例上调用 hex
时,Python 使用此方法。
此模式对于需要支持十六进制转换同时保持其类型的数字包装器类很有用。
错误处理
当与非整数类型一起使用时,hex
函数会引发 TypeError
。 此示例显示了正确的错误处理。
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
这些示例演示了 hex
对不支持类型的行为。 没有 __index__
的字符串和对象会引发 TypeError
。
要使类与 hex
一起使用,请实现 __index__
,如上一个示例所示。
十六进制格式化替代方案
此示例比较了 hex
与其他十六进制字符串格式化方法。
num = 255 # Using hex() print(hex(num)) # 0xff # Using format() print(format(num, '#x')) # 0xff print(format(num, 'x')) # ff print(format(num, '04x')) # 00ff # Using f-strings print(f"{num:#x}") # 0xff print(f"{num:x}") # ff print(f"{num:04x}") # 00ff
这展示了将数字格式化为十六进制字符串的不同方法。 hex
提供了最简单的接口,但与 format
或 f-字符串相比,控制较少。
格式说明符允许控制前缀包含、填充和大小写,与单独使用 hex
相比,提供了更大的灵活性。
最佳实践
- 用于可读性: 对于简单转换,首选
hex
- 使用 format 进行控制: 当您需要填充或大写时
- 实现 __index__: 对于需要十六进制转换的自定义数字类型
- 处理错误: 当输入类型不确定时捕获 TypeError
- 记录行为: 清楚地记录 __index__ 的实现
资料来源
作者
列出所有 Python 教程。