随着未来代码:我不明白struct.unpack
shmem = mmap.mmap(0, 20, "MumbleLink", mmap.ACCESS_READ)
print("size: "+str(struct.calcsize("IL3f3f3f512s3f")))
print(struct.unpack("IL3f3f3f512s3f", shmem))
我得到这样的输出:
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的对象calcsize说它已经是568了?
此外,值得一提的是我一直在使用Google(和检查This)对于什么是IL3f3f3f512s3f或答案你怎么能创建自己的字符串读取的存储器,例如1024,而不是568,而是使远远没有运气。关于这部分结构工程如何帮助的详细答案,或者指出我如何理解如何计算我需要用来解压缩shmem的字符串的正确方向。
这个和This问题有关。
什么版本的Python? Py2将mmap作为字符串处理,Py3作为bytearrays –