请回顾以下内容并帮助解决问题
我在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代码反序列化消息?
非常感谢。
暂无答案!
目前还没有任何答案,快来回答吧!