Python 使用struct.pack仅创建一个字节

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' 有什么方法可以强

我编写了一个python脚本,它使用
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'
您可以在中检查格式字符,但最常用的是:

  • c
    :字符,长度为1的字符串,1字节
  • b
    :有符号字符,整数,1字节
  • B
    :无符号字符,整数,1字节
  • h
    :短,整数,2字节
  • H
    :未签名的短整数,2字节
  • i
    :int,整数,4字节
  • I
    :无符号整数,整数,4字节
  • f
    :浮点,浮点,4字节
  • d
    :双精度浮点8字节

endianess(
“>”
)决定字节位置,但对于1个字节来说并不重要。

谢谢您的回答,我刚刚测试了它,它可以工作:)我以前尝试过其他一些格式字符,但似乎跳过了B格式字符^^"