繁体   English   中英

如何获取hex()在Python中打印完整的hex值?

[英]How do I get hex() to print the full hex value in Python?

假设我有2个十六进制值,这些值是从键盘输入中获取的。

例如val1 = 0x000000和val2 = 0xFF0000

而我

print(hex(val1)) 
print(hex(val2))

我得到了val2的正确输出,但是val1仅为0x0,如何获取它以打印整个值?

我说的是整个值,如果输入的值是0x000000,我想将值输出为0x000000而不是0x0。

使用format()内置函数将十六进制表示形式显示到期望的精度水平:

>>> format(53, '08x')
'00000035'
>>> format(1234567, '08x')
'0012d687'

格式代码 08x意思是“八个小写的十六进制数字用前导零填充”。

您可以使用ljust方法将十六进制值填充到指定的位数。

每当字符串小于指定的宽度时,它将附加指定的填充符以扩展它。

在您的示例示例中, hex(0x0).ljust(8, '0') == "0x000000" 保留已经足够长的字符串,以便0xFF0000仍然有效。

print(hex(0x000000).ljust(8, '0')) # Prints 0x000000
print(hex(0xFF0000).ljust(8, '0')) # Prints 0xFF0000

过去困扰我的几件重要事情:

  1. 确保您的宽度包括前导“ 0x”的长度
    • 这是因为ljust函数运算符对原始文本进行操作,而没有意识到这是一个十六进制字符串
  2. 如果您提供的宽度值短于所需的宽度,则字符串将填满不足,长度将有所不同。
    • 换句话说len(hex(0xFF0000).ljust(4, '0')) != len(hex(0xFF0000).ljust(4, '0'))因为您需要8个字符的长度才能适合这两种情况

您说用户在键盘上输入了此输入。 这意味着您已经从所需的字符串开始 ,但是您已经从输入中解析出整数并丢弃了字符串。

不要那样做 保持弦。 如果需要进行数学运算,也可以解析整数,但要保留字符串。 那你就可以做

print(original_input)

无需经过重建过程即可猜测最初输入了多少个前导零。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM