kpa*_*vel 8 protocol-buffers protoc protobuf.js protobufjs
我一直在尝试使用 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
Run Code Online (Sandbox Code Playgroud)
result.out 包含:
^R^Qmy_testing_string
Run Code Online (Sandbox Code Playgroud)
协议版本 libprotoc 3.6.0 和 libprotoc 2.5.0
只是为了正式回答:
写的命令应该没问题;输出是protobuf 二进制 - 它只是类似于文本,因为 protobuf 使用 utf-8 对字符串进行编码,并且您的内容由字符串主导。然而,尽管如此:该文件实际上并不是文本,如果需要检查它,通常应该使用十六进制查看器或类似的工具。
如果您想了解文件的内部结构,https://protogen.marcgravell.com/decode是一个很好的资源 - 它按照协议规则提取输入文件或十六进制字符串,并告诉您每个字节的含义(字段标头) 、长度前缀、有效负载等)。
我猜你的文件实际上是:
(十六进制)10 11 6D 79 5F 等
即0x10 =“字段2,长度前缀”,0x11 = 17(有效负载长度,编码为varint),然后“my_testing_string”编码为UTF8的17个字节。
| 归档时间: |
|
| 查看次数: |
9371 次 |
| 最近记录: |