为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕森卡 2022-06-07 17:53:28
我编写了一个 python 脚本,用于struct.pack()将十进制数转换为十六进制字符串。例如:struct.pack('>h', 1024) => '\x04\x00'问题是,当我输入一个低于 256 的数字时,它仍然会创建一个由两个字节组成的字符串。例如:struct.pack('>h', 20) => '\x00\x14'这对我来说是个问题,因为对于 256 以下的数字,我只能使用一个字节。这意味着对于小数点后 20,我想生成输出 '\x14'。有什么方法可以强制struct.pack()这样做还是我需要不同的功能?
查看完整描述

1 回答

?
德玛西亚99

TA贡献1770条经验 获得超3个赞

'>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 个字节并不重要。


查看完整回答
反对 回复 2022-06-07
  • 1 回答
  • 0 关注
  • 198 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信