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

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

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


当前回答

我把这个加起来,因为有时候你只想要个位数表示

(x可以是小写字母'x',也可以是大写字母'x',选择决定输出的字母是大写还是小写。):

'{:x}'.format(15)
> f

现在有了新的f "格式字符串,你可以做:

f'{15:x}'
> f

要添加0填充,您可以使用0>n:

f'{2034:0>4X}'
> 07F2

注意:f'{15:x}'中的首字母'f'表示格式字符串

其他回答

这将把一个整数转换成带有0x前缀的2位十六进制字符串:

strHex = "0x%0.2X" % integerVariable

我把这个加起来,因为有时候你只想要个位数表示

(x可以是小写字母'x',也可以是大写字母'x',选择决定输出的字母是大写还是小写。):

'{:x}'.format(15)
> f

现在有了新的f "格式字符串,你可以做:

f'{15:x}'
> f

要添加0填充,您可以使用0>n:

f'{2034:0>4X}'
> 07F2

注意:f'{15:x}'中的首字母'f'表示格式字符串

(int_variable).to_bytes(bytes_length, byteorder='big'|'little').hex()

例如:

>>> (434).to_bytes(4, byteorder='big').hex()
'000001b2'
>>> (434).to_bytes(4, byteorder='little').hex()
'b2010000'

如果你想打包一个值<255(一个字节无符号,uint8_t)的结构体,并以一个字符的字符串结束,你可能会寻找格式B而不是c。c将字符转换为字符串(本身不是太有用),而B转换为整数。

struct.pack('B', 65)

(是的,65是\x41,而不是\x65。)

结构类还可以方便地处理通信或其他用途的字节顺序。

你可以用另一种表达方式

[in] '%s' % hex(15)
[out]'0xf'