Python 命令行里显示十六进制
0x0 问题
Python 命令行经常被拿来当作计算器,进行数字或者逻辑运算。很多时候,特别是在编程时,往往需要以十六进制的方式来显示运算的结果,这时,通常需要额外调用 hex()
函数,或者按 {:x}.format(123)
格式打印出来。
这些操作多了以后,就会觉得很麻烦。所以有必要让 Python 命令行能默认地输出十六进制的结果。
0x1 解决办法
其实,Python 的 sys 标准模块里,提供了 displayhook
,对于数字如何显示,可以添加自定义的操作。
比如添加 hex.py 文件如下:
import sys
def _displayhook(o):
if type(o).__name__ in ('int', 'long'):
print(hex(o))
else:
sys.__displayhook__(o)
def hexon():
sys.displayhook = _displayhook
def hexoff():
sys.displayhook = sys.__displayhook__
然后运行 python3 -i hex.py
进入命令行。这时,如果需要以十六进制方式显示数字,只需要在执行 hexon()
即可开启。
0x2 参考资料
- https://docs.python.org/3/library/sys.html#sys.displayhook
- Python console default hex display @ https://stackoverflow.com/questions/6307433/python-console-default-hex-display
- Digit grouping in python hexadecimal number formatting @ https://stackoverflow.com/questions/56132859/digit-grouping-in-python-hexadecimal-number-formatting