Python 使用struct.pack仅创建一个字节
我编写了一个python脚本,它使用Python 使用struct.pack仅创建一个字节,python,hex,output,Python,Hex,Output,我编写了一个python脚本,它使用struct.pack()将十进制数转换为十六进制字符串 例如: struct.pack('>h', 1024) => '\x04\x00' 问题是,当我输入一个低于256的数字时,它仍然会创建一个由两个字节组成的字符串 例如: struct.pack('>h', 20) => '\x00\x14' 这对我来说是个问题,因为对于256以下的数字,我只能使用一个字节。这意味着对于20十进制,我希望生成输出'\x14' 有什么方法可以强
struct.pack()
将十进制数转换为十六进制字符串
例如:
struct.pack('>h', 1024) => '\x04\x00'
问题是,当我输入一个低于256的数字时,它仍然会创建一个由两个字节组成的字符串
例如:
struct.pack('>h', 20) => '\x00\x14'
这对我来说是个问题,因为对于256以下的数字,我只能使用一个字节。这意味着对于20十进制,我希望生成输出'\x14'
有什么方法可以强制struct.pack()这样做,还是我需要一个不同的函数?
'>h'
代表大端双字节短整数。如果要获取单字节非原始整数,必须使用
'>B'
:
struct.pack('>B', 20) => '\x14'
您可以在中检查格式字符,但最常用的是:
:字符,长度为1的字符串,1字节c
:有符号字符,整数,1字节b
:无符号字符,整数,1字节B
:短,整数,2字节h
:未签名的短整数,2字节H
:int,整数,4字节i
:无符号整数,整数,4字节I
:浮点,浮点,4字节f
:双精度浮点8字节d
endianess(
“>”
)决定字节位置,但对于1个字节来说并不重要。谢谢您的回答,我刚刚测试了它,它可以工作:)我以前尝试过其他一些格式字符,但似乎跳过了B格式字符^^"