假设我有两个从键盘输入中获取的十六进制值。
E.g。 val1 = 0x000000,val2 = 0xFF0000
我做,
print(hex(val1))
print(hex(val2))
我得到了val2的正确输出,但是val1只是0x0,如何让它打印整个值?
全值,我的意思是,如果输入的值是0x000000,我想输出值为0x000000而不是0x0。
答案 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
要注意的一些重要事项在过去曾经让我感到困惑:
ljust
函数运算符对原始文本进行操作,并且没有意识到它是一个十六进制字符串len(hex(0xFF0000).ljust(4, '0')) != len(hex(0xFF0000).ljust(4, '0'))
因为你需要8个字符的长度来适应两种情况答案 2 :(得分:1)
您说用户在键盘上输入了此输入。这意味着你已经开始使用你想要的字符串,但是你从输入中解析了整数并丢弃了字符串。
不要这样做。保持弦乐。如果你需要做数学,也要解析整数,但保留字符串。那你就可以做到print(original_input)
无需经历重建过程并猜测最初输入的前导零数。