Ene*_*nes 5 character-encoding protocol-buffers python-3.x
我有80%的Google协议缓冲区在Python3中工作.我的.proto文件工作,我编码数据,生活几乎是好的.问题是我不能将ParseFromString作为SerializeToString的结果.当我打印SerializeToString时,它看起来像我期望的,一个相当紧凑的二进制表示(前面是b').
我的猜测是,这可能与Python2和Python3处理字符串的方式不同.SerializeToString的putput是Bytes,而不是字符串.
SerializeToString的打印输出(Python类型是):
b'\x10\xd7\xeb\x8e\xcd\x04\x1a\x0cnamegoeshere2@\x08\x80\xf8\xde\xc3\x9f\xb0\x81\x89\x14\x11\x00\x00\x00\x00\x00\x80d\xc0\x19\x00\x00\x00\x00\x00\xc0m@!\x00\x00\x00\x00\x00\x80R\xc0)\x00\x00\x00\x00\x00x\xb7\xc01\x00\x00\x00\x00\x00\x8c\x95@9\x00\x00\x00\x00\x00\x16\xb2@'
Run Code Online (Sandbox Code Playgroud)
ParseFromString(消息)的结果:
None
Run Code Online (Sandbox Code Playgroud)
没有提供错误......
所以 - 我最好的猜测是我需要做的就是.decode()生成的字节对象,问题是我不知道编码是什么.我尝试过UTF-8,-16,Latin-1和其他一些没有成功的人.我的Google-Fu很强大,但我没有找到任何相关内容.
任何帮助,将不胜感激.
Ken*_*rda 10
ParseFromString
是一种方法 - 它不返回任何内容,而是填充self
解析的内容.使用它像:
message = MyMessageType()
message.ParseFromString(data)
print message.some_field
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4511 次 |
最近记录: |