首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我不明白struct.unpack

我不明白struct.unpack
EN

Stack Overflow用户
提问于 2017-04-07 19:28:00
回答 1查看 99关注 0票数 0

使用下一个代码:

代码语言:javascript
复制
shmem = mmap.mmap(0, 20, "MumbleLink", mmap.ACCESS_READ)
print("size: "+str(struct.calcsize("IL3f3f3f512s3f")))
print(struct.unpack("IL3f3f3f512s3f", shmem))

我得到了这个输出:

代码语言:javascript
复制
size: 568
Traceback (most recent call last):
  File "C:\Users\Saelyth\Desktop\test.py", line 8, in <module>
    print(struct.unpack("IL3f3f3f512s3f", shmem))
struct.error: unpack requires a bytes object of length 568

为什么它告诉我它需要一个长度为568的对象,如果煅烧说明它已经是568?

此外,值得一提的是,我一直在谷歌(并检查)以获得什么是IL3f3f3f512s3f,或者如何创建自己的字符串来读取内存,例如1024,而不是568,但到目前为止,我没有运气。一个详细的答案,关于该部分的结构如何工作,将帮助我,或指出了正确的方向,如何理解如何计算字符串,我需要使用它来解压shmem。

这与问题有关。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-07 19:36:35

您只检查输出中的大小,该大小对内存映射不可用。因此,将第一行更改为:

代码语言:javascript
复制
shmem = mmap.mmap(0, 568, "MumbleLink", mmap.ACCESS_READ);

它与结构的大小匹配。如果需要,可以先获得大小,然后创建与其匹配的内存映射(第二个参数)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43285757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档