gpt4 book ai didi

Python protobuf解码base64字符串

转载 作者:行者123 更新时间:2023-12-04 12:58:03 25 4
gpt4 key购买 nike

我正在尝试从加密的 base64 字符串中获取 JSON 数据。我已经创建了如下所示的 proto 文件

syntax = "proto2";

message ArtifactList {
repeated Artifact artifacts = 1;
}

message Artifact {
required string id = 1;
required uint64 type_id = 2;
required string uri = 3;
}
之后,我使用 proto 命令生成了 python 文件。我正在尝试解密如下所示的 base64 字符串。
import message_pb2

import base64
data = base64.b64decode("AAAAAA8KDQgTEBUgBCjln62lxS6AAAAAD2dycGMtc3RhdHVzOjANCg==")

s = str(data)
message_pb2.ArtifactList.ParseFromString(s)
但我收到以下错误。
Traceback (most recent call last):
File "app.py", line 7, in <module>
message_pb2.ArtifactList.ParseFromString(s)
TypeError: descriptor 'ParseFromString' requires a 'google.protobuf.pyext._message.CMessage' object but received a 'str'
我是protobuf的新手。我找不到解决此问题的解决方案。
任何人都可以帮助解决这个问题吗?
提前致谢。

最佳答案

有两个问题。

  • ParseFromString 是 ArtifactList 实例的方法
  • ParseFromString 接受一个类似字节的对象,而不是 str,作为参数
  • >>>import message_pb2
    >>>import base64
    >>>data = base64.b64decode("AAAAAA8KDQgTEBUgBCjln62lxS6AAAAAD2dycGMtc3RhdHVzOjANCg==")
    >>>m=message_pb2.ArtifactList()
    >>>m.ParseFromString(data)
    >>>m.artifacts
    <google.protobuf.pyext._message.RepeatedCompositeContainer object at 0x7fd09a937d68>

    关于Python protobuf解码base64字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63795678/

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