【发布时间】:2019-11-12 19:01:29
【问题描述】:
我一直在尝试使用 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
【问题讨论】:
-
你确定它不能正常工作吗?将其显示到控制台必然会导致问题 - 控制台是文本,而不是二进制。但是将其通过管道传输到文件中,它可能是正确的。您可以在 protogen.marcgravell.com/decode 进行测试 - 只需将您的测试文件上传到那里,看看它是做什么的
-
@MarcGravell 我认为这正是我在上面的示例中所做的......将编码的输出管道传输到文件 result.out
-
好吧,我错了。现在:您正在显示文本 - 该文件的 hex 是什么?将其视为文本注定要失败。请注意,由于 protobuf 将字符串编码为 utf8,因此您的文本应该“按原样”显示。我感兴趣的是文件的前 6 个(左右)字节。作为十六进制,而不是字符。
-
注意——如果你上传文件,我认为上面的解码页面会显示十六进制
-
@MarcGravell 谢谢!你说得对。上面的解码页面确实显示了预期的十六进制。
标签: protoc protobuf.js protobufjs protocol-buffers