- package ProtoTest;
- message TestInfo{
- required string test = 1;
- optional int32 num = 2;
- }
- message Msg{
- required int32 id = 1;
- optional TestInfo msg = 2;
- optional string str = 3 [defalut="Test String"];
- }
.proto Type | Notes | C++ Type | Java Type | Python Type[2] |
double | double | double | float | |
float | float | float | float | |
int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int |
int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long[3] |
uint32 | Uses variable-length encoding. | uint32 | int[1] | int/long[3] |
uint64 | Uses variable-length encoding. | uint64 | long[1] | int/long[3] |
sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int |
sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long[3] |
fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 228. | uint32 | int[1] | int |
fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 256. | uint64 | long[1] | int/long[3] |
sfixed32 | Always four bytes. | int32 | int | int |
sfixed64 | Always eight bytes. | int64 | long | int/long[3] |
bool | bool | boolean | boolean | |
string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode[4] |
bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str |
- protoc -I=e:\proto --cpp_out=e:\proto e:\proto\myproto.proto
- //使用方法为:
- protogen -i:input.proto -o:output.cs
- protogen -i:input.proto -o:output.xml -t:xml
- protogen -i:input.proto -o:output.cs -p:datacontract -q
- protogen -i:input.proto -o:output.cs -p:observable=true
- protogen -i:e:\proto\myproto.proto -o:myproto.cs