使用 struct.pack 只创建一个字节

我编写了一个 python 脚本,用于struct.pack()将十进制数转换为十六进制字符串。

例如:

struct.pack('>h', 1024) => '\x04\x00'

问题是,当我输入一个低于 256 的数字时,它仍然会创建一个由两个字节组成的字符串。

例如:

struct.pack('>h', 20) => '\x00\x14'

这对我来说是个问题,因为对于 256 以下的数字,我只能使用一个字节。这意味着对于小数点后 20,我想生成输出 '\x14'。

有什么方法可以强制struct.pack()这样做还是我需要不同的功能?


慕森卡
浏览 199回答 1
1回答

德玛西亚99

'>h'代表 big endian 两个字节的短整数。如果你想得到一个单字节无符号整数,你必须使用'>B':struct.pack('>B', 20) => '\x14'可以查看官方文档中的格式字符,但最常用的是:c: char,长度为 1 的字符串,1 字节b: 有符号字符,整数,1 字节B: 无符号字符,整数,1 字节h:短,整数,2字节H:无符号短整型,2字节i:整数,整数,4字节I:无符号整数,整数,4字节f:浮动,浮动,4字节d:双,浮点数,8字节字节序 ( '>') 确定字节位置,但对于 1 个字节并不重要。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python