无需反序列化的Google Protobuf

问题描述 投票:0回答:1

通常,google

protobuf
nanopb
实现旨在分别在服务器/客户端上序列化/反序列化消息。

但是,我面临着服务器端省略序列化的情况,因为有人想要优化它(可能依赖于客户端/服务器上的字节顺序相同)。

在客户端,我喜欢反序列化消息,但由于上述原因而失败。 我从服务器收到一个字节数组,但这个字节数组只是原始消息到字节数组的转换。

现在,我无法从字节数组中设置

google.protobuf.message
,因为我无法在强制转换上调用
ParseFromString
。 我需要的是类似于
int.from_bytes
方法的东西,但用于 protobuf 消息。

比如说,我在

xx_pb2.MYMESSAGE
生成的源文件
protoc
中有一条消息
xx_pb2
。 我想将字节数组转换成这个消息(伪代码:
xx_pb2.MYMESSAGE.from_bytes(the_byte_array)
)。

我该怎么做?

python-3.x casting type-conversion protocol-buffers messaging
1个回答
0
投票

这就是我要做的:

  • 在您的客户端代码中,创建一个 MYMESSAGE 对象。
  • 一次填充一个属性,使用 int.from_bytes 之类的东西从字节数组中提取它。
  • 那么,你可以
    A。直接使用 MYMESSAGE 实例或
    b.您可以将其序列化为字节,然后从这些字节中,您可以执行 xx_pb2.MYMESSAGE.from_bytes(the_byte_array)
© www.soinside.com 2019 - 2024. All rights reserved.