gpt4 book ai didi

protocol-buffers - 从描述符字符串恢复 .proto 文件。可能的?

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

是否可以将包含 Protocol Buffers 描述符的字符串反编译回 .proto 文件?

假设我有一个很长的字符串,比如

\n\file.proto\u001a\u000ccommon.proto\"\u00a3\u0001\n\nMsg1Request\u0012\u0017\n\u0006common\u0018\u0001 ...

我需要恢复 .proto,不需要完全按照原样进行,但可以编译。

最佳答案

在 C++ 中,FileDescriptor 接口(interface)有一个方法 DebugString().proto 语法格式化描述符内容 -- 即究竟是什么你要。为了使用它,您首先需要编写代码,使用 DescriptorPool 接口(interface)将原始 FileDescriptorProto 转换为 FileDescriptor

应该这样做:

#include <google/protobuf/descriptor.h>
#include <google/protobuf/descriptor.pb.h>
#include <iostream>

int main() {
google::protobuf::FileDescriptorProto fileProto;
fileProto.ParseFromFileDescriptor(0);
google::protobuf::DescriptorPool pool;
const google::protobuf::FileDescriptor* desc =
pool.BuildFile(fileProto);
std::cout << desc->DebugString() << std::endl;
return 0;
}

您需要向该程序提供 FileDescriptorProto 的原始字节,您可以通过使用 Java 使用 ISO-8859-1 字符集将字符串编码为字节来获得。

另请注意,如果文件导入任何其他文件,上述方法将不起作用 - 您必须先将这些导入加载到 DescriptorPool 中。

关于protocol-buffers - 从描述符字符串恢复 .proto 文件。可能的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19418655/

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