如何将整数格式化为两位数的十六进制?

How can I format an integer to a two digit hex?

提问人:AndroidDev 提问时间:7/27/2012 最后编辑:Martin ThomaAndroidDev 更新时间:10/31/2021 访问量:126455

问:

有谁知道如何获得输出始终为两位数的 chr 到十六进制转换?

例如,如果我的转换产生 0x1,我需要将其转换为 ,因为我正在连接一个长十六进制字符串。0x01

我使用的代码是:

hexStr += hex(ord(byteStr[i]))[2:]

评论


答:

20赞 JBernardo 7/27/2012 #1

您可以使用格式函数:

>>> format(10, '02x')
'0a'

您不需要用它来删除零件(就像您对0x[2:])

评论

0赞 AndroidDev 7/27/2012
谢谢。这是个好主意。但是,我无法让它工作,因为我的输出是一个字符串,而且这似乎只适用于整数。我对 python 很陌生。有没有办法解决这个问题?
0赞 Ifthikhan 7/27/2012
字符串可以按以下方式转换为整数 format(string(“10”), '02x')
66赞 Sven Marnach 7/27/2012 #2

为此,您可以使用字符串格式:

>>> "0x{:02x}".format(13)
'0x0d'

>>> "0x{:02x}".format(131)
'0x83'

编辑:您的代码表明您正在尝试将字符串转换为十六进制字符串表示形式。有一种更简单的方法可以做到这一点(Python2.x):

>>> "abcd".encode("hex")
'61626364'

另一种选择(在 Python 3.x 中也有效)是函数 。binascii.hexlify()

评论

0赞 AndroidDev 7/27/2012
谢谢。这奏效了,除了我必须从一开始就删除 0x,因为我想要的只是之后的部分。
1赞 shao.lo 7/22/2017
另请注意,如果您想要 0x0D vs 0x0d请在格式字符串中使用 X vs x,即"0x{:02X}".format(13)
0赞 alhelal 9/13/2018
"0x{:02x}".format(239557639)结果错误'0xe475c07'
2赞 Diego Queiroz 7/27/2012 #3

使用格式而不是使用十六进制函数:

>>> mychar = ord('a')
>>> hexstring = '%.2X' % mychar

您还可以将数字“2”更改为所需的位数,将“X”更改为“x”,以在十六进制字母数字的大写和小写表示之间进行选择。

许多人认为这被认为是 Python 中旧的 % 样式格式,但我喜欢它,因为格式字符串语法与其他语言(如 C 和 Java)使用相同。

4赞 pepr 7/27/2012 #4

标准模块也可能是答案,即当您需要转换更长的字符串时:binascii

>>> import binascii
>>> binascii.hexlify('abc\n')
'6162630a'
6赞 vitperov 1/13/2015 #5
htmlColor = "#%02X%02X%02X" % (red, green, blue)
2赞 emersonblima 7/14/2017 #6

最简单的方法(我认为)是:

your_str = '0x%02X' % 10
print(your_str)

将打印:

0x0A

% 后面的数字将在字符串内转换为十六进制,我认为这种方式很清楚,并且来自 C 背景的人(像我一样)感觉更像是家

评论

0赞 Randy Leberknight 10/30/2021
我会注意到使用 your_str = '0x%02X,' % 10 的输出中有一个逗号。0x0A,
0赞 emersonblima 10/31/2021
这是真的,我一定是从我正在处理的一些代码中复制了它,并且没有很好地清理它。谢谢你的收获。
0赞 Randy Leberknight 11/2/2021
实际上,我发现这个例子很有用,因为我想要一个逗号:)
10赞 MatrixManAtYrService 10/22/2018 #7

如果您使用的是 python 3.6 或更高版本,您还可以使用 fstrings:

v = 10
s = f"0x{v:02x}"
print(s)

输出:

0x0a

大括号部分的语法与 相同,只是您使用了变量的名称。有关详细信息,请参阅 https://www.python.org/dev/peps/pep-0498/string.format()