gpt4 book ai didi

protoc - 如何使用 protoc 将 Protocol Buffer 字符串编码为二进制

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

我一直在尝试使用 protoc cli 实用程序对字符串进行编码。
注意到输出仍然包含纯文本。
我究竟做错了什么?

osboxes@osboxes:~/proto/bin$ cat ./teststring.proto
syntax = "proto2";
message Test2 {
optional string b = 2;
}

echo b:\"my_testing_string\"|./protoc --encode Test2 teststring.proto>result.out

result.out 包含:
^R^Qmy_testing_string

protoc 版本 libprotoc 3.6.0 和 libprotoc 2.5.0

最佳答案

只是为了正式回答:

写的命令应该没问题;输出是 protobuf 二进制 - 它只是类似于文本,因为 protobuf 使用 utf-8 对字符串进行编码,并且您的内容以字符串为主。然而,尽管如此:该文件实际上并不是文本,如果您需要检查它,您通常应该使用十六进制查看器或类似工具。

如果您想了解文件的内部结构,https://protogen.marcgravell.com/decode是一个很好的资源 - 它按照协议(protocol)规则撕下输入文件或十六进制字符串,并告诉您每个字节的含义(字段标题、长度前缀、有效负载等)。

我猜你的文件实际上是:

(十六进制) 10 11 6D 79 5F 等

即 0x10 = "field 2, length prefixed", 0x11 = 17 (payload length, 编码为 varint), 然后 "my_testing_string"编码为 17 字节的 UTF8。

关于protoc - 如何使用 protoc 将 Protocol Buffer 字符串编码为二进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51087310/

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