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

如何让hex()在Python中打印完整的十六进制值?,python,hex,Python,Hex,假设我有2个十六进制值,它们是从键盘输入中获取的 例如,val1=0x000000和val2=0xFF0000 而我呢 print(hex(val1)) print(hex(val2)) 我得到了val2的正确输出,但是val1只是0x0,如何让它打印整个值 通过整数值,我的意思是,如果输入的值是0x000000,我希望输出的值是0x000000而不是0x0 您可以使用ljust方法将十六进制值填充到指定的位数 每当字符串小于指定的宽度时,它将附加指定的填充字符以扩展它 在您的示例中,hex

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

例如,val1=0x000000和val2=0xFF0000

而我呢

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


通过整数值,我的意思是,如果输入的值是0x000000,我希望输出的值是0x000000而不是0x0

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

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

在您的示例中,
hex(0x0).ljust(8,'0')==“0x000000”
。 已足够长的字符串将被保留,以便0xFF0000仍能工作

print(hex(0x000000).ljust(8, '0')) # Prints 0x000000
print(hex(0xFF0000).ljust(8, '0')) # Prints 0xFF0000
有几件重要的事情过去曾让我心痛不已:

  • 确保您的宽度包括前导“0x”的长度
    • 这是因为
      ljust
      函数运算符对原始文本进行操作,并且没有意识到它是十六进制字符串
  • 如果给定的宽度值比需要的短,则字符串的填充量不够,长度也会不同。
    • 换句话说,
      len(十六进制(0xFF0000).ljust(4,'0'))!=len(十六进制(0xFF0000).ljust(4,'0'))
      因为两种情况下都需要8个字符的长度
  • 使用内置函数将十六进制表示显示为预期精度:

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

    08x
    表示“八个小写十六进制数字加上前导零”。

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

    不要那样做。保持联系。如果需要做数学运算,也要解析整数,但要保留字符串。那你就做吧

    print(original_input)
    

    无需经过重构过程,猜测最初输入了多少前导零。

    您到底想要什么
    0x0
    0x000000
    是相等的。我知道它们是相等的,只是我正在做的一些编程挑战的测试用例要求的是完整值。请您的问题准确解释您想要打印什么。什么是“完整值”?是否只需要完整值的字符串表示?如果需要原始字符串,为什么要将用户输入转换为整数?