下一个代码:
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
如果calcsize说它已经是568了,为什么它告诉我它需要一个长度为568的对象?
另外,值得一提的是,我一直在google(并检查了This)寻找什么是il3f3f512s3f的答案,或者如何创建自己的字符串来读取例如1024的内存,而不是568的内存,但到目前为止,我没有运气。一个关于struct的这一部分如何工作的详细答案会有所帮助,或者为我指明了如何理解如何计算解包shmem所需的字符串的正确方向。你知道吗
这与This问题有关。你知道吗
只检查输出中的大小,该大小对内存映射不可用。所以把第一行改成:
与结构的大小匹配。如果需要,可以先获取大小,然后创建内存映射以匹配它(第二个参数)
相关问题 更多 >
编程相关推荐