如何让hex()在Python中打印完整的十六进制值?
假设我有2个十六进制值,它们是从键盘输入中获取的 例如,val1=0x000000和val2=0xFF0000 而我呢如何让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
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
有几件重要的事情过去曾让我心痛不已:
- 这是因为
函数运算符对原始文本进行操作,并且没有意识到它是十六进制字符串ljust
- 换句话说,
因为两种情况下都需要8个字符的长度len(十六进制(0xFF0000).ljust(4,'0'))!=len(十六进制(0xFF0000).ljust(4,'0'))
>>> format(53, '08x')
'00000035'
>>> format(1234567, '08x')
'0012d687'
08x
表示“八个小写十六进制数字加上前导零”。你说用户在键盘上输入了这个输入。这意味着您已经开始使用您想要的字符串,但是您解析了输入中的整数并丢弃了字符串
不要那样做。保持联系。如果需要做数学运算,也要解析整数,但要保留字符串。那你就做吧
print(original_input)
无需经过重构过程,猜测最初输入了多少前导零。您到底想要什么
0x0
和0x000000
是相等的。我知道它们是相等的,只是我正在做的一些编程挑战的测试用例要求的是完整值。请您的问题准确解释您想要打印什么。什么是“完整值”?是否只需要完整值的字符串表示?如果需要原始字符串,为什么要将用户输入转换为整数?