无法在python中反序列化protobuf二进制文件(由nodejs创建)

qaxu7uf2  于 2021-06-05  发布在  Kafka
关注(0)|答案(0)|浏览(332)

请回顾以下内容并帮助解决问题
我在device.proto中定义了以下消息

message DeviceConfiguration {
  message Resolution {
    uint32 width = 1;
    uint32 height = 2;
  }
  string device_name = 1;
  string brand_name = 2;
  Resolution resolution = 3;
}

然后,将此消息编译成两种语言:nodejs(device\u pb.js)和python(device\u pb2.py)
1发自nodejs:将上述信息发送给Kafka

const {DeviceConfiguration} = require("./device_pb")

const resolution = new DeviceConfiguration.Resolution();
resolution.setWidth(1280);
resolution.setHeight(960);

const deviceConfiguration = new DeviceConfiguration();
deviceConfiguration.setDeviceName("S6");
deviceConfiguration.setBrandName("samsung");
deviceConfiguration.setResolution(resolution);

let binaryEvent = deviceConfiguration.serializeBinary();

最后,使用kafka节点向kafka主题发送binaryevent值
2来自python组件:通过kafka使用消息
下面是python组件中接收到的二进制值
b'10,8111,98106101,99116,73100,26,21,10,2,83,54,18,7115,9710911511710103,26,6,8128,10,16192,7'
然后,我使用下面的代码反序列化消息,但它抛出一条消息“error parsing message”
从设备\u pb2导入设备配置
设备=设备配置()
device.parsefromstring(消息)
=>正如我看到的,parsefromstring不适用于上述二进制值,并抛出“error parsing message”。只有当字节值是由serializetostring python代码创建的时,它才起作用。
注意:我可以在nodejs中使用deserializebinary(公开)来反序列化二进制文件,但是在device\u pb2.py中没有类似的函数
那么,我有没有办法用python代码反序列化消息?
非常感谢。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题