我想取一个整数(这将是<= 255),以十六进制字符串表示
例:我想传入65并得到'\x41',或者255并得到'\xff'。
我尝试过用struct.pack('c',65)这样做,但它会阻塞任何超过9的东西,因为它想要接受单个字符串。
我想取一个整数(这将是<= 255),以十六进制字符串表示
例:我想传入65并得到'\x41',或者255并得到'\xff'。
我尝试过用struct.pack('c',65)这样做,但它会阻塞任何超过9的东西,因为它想要接受单个字符串。
当前回答
我想要一个随机整数转换成一个六位数十六进制字符串与#在开始。为了得到这个,我用了
"#%6x" % random.randint(0xFFFFFF)
其他回答
(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。)
结构类还可以方便地处理通信或其他用途的字节顺序。
Try:
"0x%x" % 255 # => 0xff
or
"0x%X" % 255 # => 0xFF
Python文档说:“把这个放在你的枕头下面:http://docs.python.org/library/index.html”
这将把一个整数转换成带有0x前缀的2位十六进制字符串:
strHex = "0x%0.2X" % integerVariable
你要找的是chr函数。
您似乎混合了整数的十进制表示和整数的十六进制表示,因此不完全清楚您需要什么。根据你的描述,我认为其中一个片段可以说明你想要什么。
>>> chr(0x65) == '\x65'
True
>>> hex(65)
'0x41'
>>> chr(65) == '\x41'
True
注意,这与包含十六进制整数的字符串完全不同。如果这是你想要的,使用十六进制内置。