gpt4 book ai didi

go - 无法找到 Protobuf Unmarshal 错误的解决方案

转载 作者:行者123 更新时间:2023-12-01 20:26:24 28 4
gpt4 key购买 nike

在解码二进制 protobuf 消息时,我收到以下错误“解码错误:proto:无法解析保留的线类型”。

newMessage := &MessageName{}
err = proto.Unmarshal(data, newMessage)

这里是我从 Protobuf 二进制文件中读取的数据,其内容类似于此处给出的二进制格式 -> What does the protobuf text format look like?

读取文件并存储在数据中后,数据看起来像这样 [23 67 102 56 ... ]

如何修复此错误?

最佳答案

[23 67 102 56 ... ]看起来像一片整数,我假设整数是字节值。如果这是真的,这不是 protobuf 流!

看着protobuf docs ,第一个字节始终是 varint 键。这由字段编号(前 5 位)和线路类型(后 3 位)组成。您的 int of 23 如下所示:

  0001  0111
^ ^
varint wiretype

有效的电线类型显示在文档中。你的二进制值 111是十进制 7 ,这不是列出的类型之一。因此: cannot parse reserved wire type
Type    Meaning             Used For
0 Varint int32, int64, uint32, uint64, sint32, sint64, bool, enum
1 64-bit fixed64, sfixed64, double
2 Length-delimited string, bytes, embedded messages, packed repeated fields
3 Start group groups (deprecated)
4 End group groups (deprecated)
5 32-bit fixed32, sfixed32, float

关于go - 无法找到 Protobuf Unmarshal 错误的解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62033409/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com