如何让hex()在Python中打印完整的十六进制值?

时间:2018-04-14 04:46:13

标签: python hex

假设我有两个从键盘输入中获取的十六进制值。

E.g。 val1 = 0x000000,val2 = 0xFF0000

我做,

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

我得到了val2的正确输出,但是val1只是0x0,如何让它打印整个值?

全值,我的意思是,如果输入的值是0x000000,我想输出值为0x000000而不是0x0。

3 个答案:

答案 0 :(得分:4)

使用format()内置函数将十六进制表示显示为预期的精度级别:

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

format code 08x表示"八个小写十六进制数字用前导零填充"。

答案 1 :(得分:1)

您可以使用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个字符的长度来适应两种情况

答案 2 :(得分:1)

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

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

print(original_input)

无需经历重建过程并猜测最初输入的前导零数。