一、下载
下载地址:https://github.com/protocolbuffers/protobuf/releases/
这里下载的是
protoc --version
二、数据类型
基础类型
.proto类型 | java类型 | C++类型 | 备注 |
---|---|---|---|
double | double | double | |
float | float | float | |
int32 | int | int32 | 使用可变长编码方式。编码负数时不够高效——如果你的字段可能含有负数,那么请使用sint32。 |
int64 | long | int64 | 使用可变长编码方式。编码负数时不够高效——如果你的字段可能含有负数,那么请使用sint64。 |
unit32 | int[1] | unit32 | 总是4个字节。如果数值总是比总是比228大的话,这个类型会比uint32高效。 |
unit64 | long[1] | unit64 | 总是8个字节。如果数值总是比总是比256大的话,这个类型会比uint64高效。 |
sint32 | int | int32 | 使用可变长编码方式。有符号的整型值。编码时比通常的int32高效。 |
sint64 | long | int64 | 使用可变长编码方式。有符号的整型值。编码时比通常的int64高效。 |
fixed32 | int[1] | unit32 | |
fixed64 | long[1] | unit64 | 总是8个字节。如果数值总是比总是比256大的话,这个类型会比uint64高效。 |
sfixed32 | int | int32 | 总是4个字节。 |
sfixed64 | long | int64 | 总是8个字节。 |
bool | boolean | bool | |
string | String | string | 一个字符串必须是UTF-8编码或者7-bit ASCII编码的文本。 |
bytes | ByteString | string | 可能包含任意顺序的字节数据 |
特殊字段
英文 | 中文 | 备注 |
---|---|---|
enum | 枚举(数字从零开始) 作用是为字段指定某”预定义值序列” | enum Type {MAN = 0;WOMAN = 1; OTHER= 3;} |
message | 消息体 | message User{} |
repeated | 数组/集合 | repeated User users = 1 |
import | 导入定义 | import "protos/other_protos.proto" |
// | 注释 | //用于注释 |
extend | 扩展 | extend User {} |
package | 包名 | 相当于命名空间,用来防止不同消息类型的明明冲突 |
参考链接:https://www.jianshu.com/p/362a6cdb63c5
三、转换及使用
js
转js
protoc --js_out=import_style=commonjs,binary:. 你的proto文件名.proto
python
转py
protoc --python_out=. hello.proto
使用:
pip install protobuf