十六进制值无效

时间:2012-10-19 07:15:46

标签: python hex

我正在使用hex(int('00000000', 2))将二进制字符串转换为十六进制。

它适用于从10FF的所有(输出)值,但它没有正确填充0009,我看到{{1转到0x0而不是我期待的0x90x00

我做错了什么?

4 个答案:

答案 0 :(得分:5)

hex()将返回可能的最短字符串。

一种替代方法是简单地使用:

"0x%02x" % int('00000000', 2)

答案 1 :(得分:3)

为什么您认为hex(0)应该返回0x000x0在语义上是正确的,是十六进制0的最短表示。考虑一下:当你写小数零时,它是0而不是00。或者例如0x9 == 00009 == 9。而后者是数字9的自然非冗余十进制表示。

答案 2 :(得分:0)

0x9是一个等于0x09的有效十六进制数。 hex方法不知道要添加多少填充

您可以使用正则表达式修复填充并从“0x9”获取“0x09”

number = re.sub('x(\d)$','x0\1',number)

答案 3 :(得分:0)

使用字符串格式将值转换为十六进制。

'0x{:02x}'.format(int('00000110', 2))
相关问题