我想取一个整数(这将是<= 255),以十六进制字符串表示

例:我想传入65并得到'\x41',或者255并得到'\xff'。

我尝试过用struct.pack('c',65)这样做,但它会阻塞任何超过9的东西,因为它想要接受单个字符串。


当前回答

我想要一个随机整数转换成一个六位数十六进制字符串与#在开始。为了得到这个,我用了

"#%6x" % random.randint(0xFFFFFF)

其他回答

这对我来说效果最好

"0x%02X" % 5  # => 0x05
"0x%02X" % 17 # => 0x11

如果你想要一个宽度更大的数字(2是2个十六进制打印字符),那么3会给你以下结果

"0x%03X" % 5  # => 0x005
"0x%03X" % 17 # => 0x011

你要找的是chr函数。

您似乎混合了整数的十进制表示和整数的十六进制表示,因此不完全清楚您需要什么。根据你的描述,我认为其中一个片段可以说明你想要什么。

>>> chr(0x65) == '\x65'
True


>>> hex(65)
'0x41'
>>> chr(65) == '\x41'
True

注意,这与包含十六进制整数的字符串完全不同。如果这是你想要的,使用十六进制内置。

你也可以把任何基数的任何数字转换成十六进制。使用这一行代码,它很容易使用:

十六进制(int x (n,) . replace(“0x”、“”)

你有一个字符串n是你的数字x是这个数字的底。首先,改变它为整数,然后十六进制,但十六进制有0x在它的第一个,所以替换我们删除它。

那么hex()呢?

hex(255)  # 0xff

如果你真的想要有\在前面,你可以这样做:

print '\\' + hex(255)[1:]

Try:

"0x%x" % 255 # => 0xff

or

"0x%X" % 255 # => 0xFF

Python文档说:“把这个放在你的枕头下面:http://docs.python.org/library/index.html”