C#下使用protobuf(Google Protocol Buffers)
- 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 |
PythonType[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