提问人:AndroidDev 提问时间:7/27/2012 最后编辑:Martin ThomaAndroidDev 更新时间:10/31/2021 访问量:126455
如何将整数格式化为两位数的十六进制?
How can I format an integer to a two digit hex?
问:
有谁知道如何获得输出始终为两位数的 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()
评论