我想取一个整数(这将是<= 255),以十六进制字符串表示
例:我想传入65并得到'\x41',或者255并得到'\xff'。
我尝试过用struct.pack('c',65)这样做,但它会阻塞任何超过9的东西,因为它想要接受单个字符串。
我想取一个整数(这将是<= 255),以十六进制字符串表示
例:我想传入65并得到'\x41',或者255并得到'\xff'。
我尝试过用struct.pack('c',65)这样做,但它会阻塞任何超过9的东西,因为它想要接受单个字符串。
当前回答
Try:
"0x%x" % 255 # => 0xff
or
"0x%X" % 255 # => 0xFF
Python文档说:“把这个放在你的枕头下面:http://docs.python.org/library/index.html”
其他回答
你也可以把任何基数的任何数字转换成十六进制。使用这一行代码,它很容易使用:
十六进制(int x (n,) . replace(“0x”、“”)
你有一个字符串n是你的数字x是这个数字的底。首先,改变它为整数,然后十六进制,但十六进制有0x在它的第一个,所以替换我们删除它。
我想要一个随机整数转换成一个六位数十六进制字符串与#在开始。为了得到这个,我用了
"#%6x" % random.randint(0xFFFFFF)
这对我来说效果最好
"0x%02X" % 5 # => 0x05
"0x%02X" % 17 # => 0x11
如果你想要一个宽度更大的数字(2是2个十六进制打印字符),那么3会给你以下结果
"0x%03X" % 5 # => 0x005
"0x%03X" % 17 # => 0x011
对于Python >= 3.6,使用f-string格式:
>>> x = 114514
>>> f'{x:0x}'
'1bf52'
>>> f'{x:#x}'
'0x1bf52'
如果你想打包一个值<255(一个字节无符号,uint8_t)的结构体,并以一个字符的字符串结束,你可能会寻找格式B而不是c。c将字符转换为字符串(本身不是太有用),而B转换为整数。
struct.pack('B', 65)
(是的,65是\x41,而不是\x65。)
结构类还可以方便地处理通信或其他用途的字节顺序。