繁体   English   中英

struct.error: unpack_from 需要至少 4 个字节的缓冲区

[英]struct.error: unpack_from requires a buffer of at least 4 bytes

我对 Flatbuffers 非常陌生,并且提高了我对 Python 的了解,所以如果我忽略了一些简单的事情,请原谅我。

我正在尝试让示例 Monster 应用程序在 Python 上运行,但收到以下错误: struct.error: unpack_from 需要至少 4 个字节的缓冲区

我正在使用教程中的文件,使用 flatc 生成代码并读取 Monster 数据文件。 当我尝试使用“ monster.Mana() ”访问数据时,它会向我发送一条错误消息。

这是我正在使用的代码,再简单不过了。 我已经尝试使用 2.7 和 3.6 两个版本的代码并得到相同的错误:-(

 import MyGame # refers to generated code import MyGame.Example as example import MyGame.Example.Color # refers to generated code import MyGame.Example.Monster # refers to generated code import MyGame.Example.Weapon # refers to generated code import MyGame.Example.Vec3 # refers to generated code buf = open('monsterdata.json', 'rb').read() buf = bytearray(buf) monster = MyGame.Example.Monster.Monster.GetRootAsMonster(buf, 0) mana = monster.Mana()

错误信息:

color = monster.Mana()

文件“/project/sample/MyGame/Example/Monster.py”,第 34 行,在 Mana o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(6)) 文件“/home/colin/.local/ lib/python3.6/site-packages/flatbuffers/table.py”,第 37 行,在 Offset vtable = self.Pos - self.Get(N.SOffsetTFlags, self.Pos) 文件“/home/colin/.local/ lib/python3.6/site-packages/flatbuffers/table.py”,第 93 行,在 Get return flags.py_type(encode.Get(flags.packer_type, self.Bytes, off)) 文件“/home/colin/. local/lib/python3.6/site-packages/flatbuffers/encode.py",第 24 行,在 Get return packer_type.unpack_from(memoryview_type(buf), head)[0] struct.error: unpack_from 需要一个至少为4字节

我确信我在做一些愚蠢的事情,希望能得到一些帮助。

rgds科林

经过一些进一步的测试并退后一步回顾实际问题是什么,我意识到自己做错了什么。

我发布的代码是读取 json 文件并转换为二进制形式,而不是读取使用 flatc 生成的二进制形式。 这当然行不通,并导致错误。 在纠正代码以读取二进制数据后,一切都按预期工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM