python - 我对python中的解包函数有问题
问题描述
对不起,因为我的英语不好。
我很想用 python 中的 unpack 解码一些二进制消息。但我有问题
第一条消息如下所示
from struct import *
firstMessage = b'\x00\x00\x00\x00\xff\xff\xff\x00' #without tags
decodeFirstMessage = unpack('1q',firstMessage)
print(decodeFirstMessage[0])
第二条消息看起来像这样
from struct import *
secondMessage = b'*xxyyzz \x03 \x00\x00\x00\x00\xff\xff\xff\x00 tago1;' #with tags
decodeSecondMessage = unpack('7s1s1B1sq1s6s',firstMessage)
print(decodeSecondMessage [0])
对于我得到的第一个代码:
72057589742960640
作为答案。
对于我得到的第二个代码:
unpack 需要 31 个字节的缓冲区
作为答案。
我试图用这段代码验证函数解包中的格式值
print(calcsize('1q'))
print(calcsize('7s1s1B1sq1s6s'))
我得到:
8
和
31
我自己计算了字节并得到
8
和
25
当我在“格式”中用 b 或 h 更改 q 时,我用 calcsize() 得到 18 字节或 19 字节的正确值
但是对于 l 和 qi 有问题
我的功能有什么问题或如何解决这个问题?
解决方案
推荐阅读
- c# - C#/C++ 如何获取所有桌面(包括非活动桌面)的屏幕截图或渲染帧
- android-studio - 芯片组件崩溃,给出错误“无法实例化类”
- python - 根据其他表填写表中缺失的数据
- c# - 如何使用 Visual Studio 中的内置登录控件将现有 SQL Server 连接到 ASP.NET 表单应用程序(网站)
- php - 在 php 文件中使用 php 更改选定的选项卡(li 元素)颜色
- javascript - 如何使用 Cheerio 将抓取的数据转换为 JSON 对象
- r - 分类变量内 R 中的随机抽样
- bash - 使用 shell 脚本在 Linux 中查找现有程序的最可靠方法?
- docker - 如何控制对docker中的卷进行的文件操作?
- java - 在 Java 中使用 Kerberos 密钥表进行 HTTP 调用