Google Protobuf Primer (2) Language Guide
去年年初初次接触 Google Protobuf,如今已经有不少变化,从这篇开始,续一下 :)
1. Specifying Field Rules
You specify that message fields are one of the following:
-
required
: a well-formed message must have exactly one of this field.
-
optional
: a well-formed message can have zero or one of this field (but not more than one).
-
repeated
: this field can be repeated any number of times (including zero) in a well-formed message. The order of the repeated values will be preserved.
For historical reasons, repeated fields of basic numeric types aren't encoded as efficiently as they could be. New code should use the special option [packed=true] to get a more efficient encoding. For example:
repeated int32 samples = 4 [packed=true];
But when you use it as the following:
message Locations {
repeated Location location = 1 [packed=true];
}
compile it, then you will got a warning:
[packed = true] can only be specified for repeated primitive fields.
So pay attention to the type of fields you intend to specify.
2. Scalar Value Types
proto Type
Notes
C++ Type
Java Type
double |
|
double |
double |
float |
|
float |
float |
int32 |
variable-len, inefficient for negative num |
int32 |
int |
int64 |
variable-len, inefficient for negative num |
int64 |
long |
uint32 |
variable-len |
uint32 |
int |
uint64 |
variable-len |
uint64 |
long |
sint32 |
variable-len, signed num |
int32 |
int |
sint64 |
variable-len, signed num |
int64 |
long |
fixed32 |
always 4-byte, efficient > 228
|
int32 |
int |
fixed64 |
always 8-byte, efficient > 256
|
int64 |
long |
sfixed32 |
always 4-byte |
int32 |
int |
sfixed64 |
always 8-btye |
int64 |
long |
bool |
|
bool |
boolean |
string |
UTF-8 string, 7-bit ASCII string |
string |
String |
bytes |
any arbitrary sequence of bytes |
string |
ByteString |
概括下:
- 可正可负,范围小(228或256以内):
sint32
或sint64
- 可正可负,范围大(228或256以上):
sfixed32
或sfixed64
- 只会正的,范围小(228或256以内):
uint32
或uint64
- 只会正的,范围大(228或256以上):
fixed32
或fixed64
- 布尔:
bool
- 浮点:
float
或double
- utf8 string 或 7-bit ascii string:
string
- ByteString:
bytes
-
转载请注明来自柳大的CSDN博客:Blog.CSDN.net/Poechant,微博:weibo.com/lauginhom
-
分享到:
相关推荐
本指南为Google的Protocol Buffers语言指南,它描述了如何使用Protocol Buffers协议来构建你的数据结构,涵盖了.proto文件语法以及如何从.proto文件生成数据访问类。此指南主要介绍的是proto2版本的Protocol Buffers...
google protobuf 最新源代码google protobuf 最新源代码google protobuf 最新源代码google protobuf 最新源代码google protobuf 最新源代码google protobuf 最新源代码google protobuf 最新源代码google protobuf ...
标题中的“Windows环境使用google protobuf实现简单的例子”指的是在Windows操作系统下,利用Visual Studio (VS) 2010开发环境,结合Google的Protocol Buffers(protobuf)版本2.5.0进行简单应用的教程。protobuf是...
服务器端与客户端通信,使用google protobuf作为交互数据的序列化工具,其中客户端使用select机制实现I/O复用,服务端使用epoll机制,提高并发连接时的处理效率。软件环境:linux。文件dealpack.cc是服务端和客户端...
protobuf,全称Protocol Buffers,是Google开发的一种数据序列化协议。它提供了一种语言无关、平台无关、高效且自动化的数据序列化方法,类似于XML和JSON,但更小、更快、更简单。在"google protobuf-2.4.1"这个版本...
Google Protobuf(Protocol Buffers)是Google开发的一种数据序列化协议,它允许开发者定义数据结构的格式,并将这些数据高效地编码和解码为二进制格式,适用于跨平台、跨语言的数据交换。Protobuf的设计目标是提高...
Protobuf(Protocol Buffers)是Google推出的一种数据序列化协议,它提供了一种语言中立、平台中立、可扩展的方式来组织数据,类似于XML和JSON,但更高效、更小且更快。在3.20.2版本中,我们关注的是其性能优化、新...
ProtocolBuffer是用于结构化数据串行化的灵活、高效、自动的方法,有如XML,不过它更小、更快、也更简单。你可以定义自己的数据结构,...protobuf-java-3.2.0.jar包 太难找了,只能是自己发布一个jar包 特此分享出来
protobuf全称是Protocol Buffers,是由Google开发的一种数据序列化协议,它允许开发者定义数据结构,然后将数据编码为二进制格式,用于存储或网络传输。标题中的"google protobuf-3.2.0"指的是protobuf的3.2.0版本,...
4. **ROS2的dds_idl工具**:ROS2提供了一个工具`dds_idl`,它可以将protobuf消息转换为DDS IDL(Interface Definition Language),这样就可以在DDS环境中使用这些消息。 5. **ROS2的idlpp工具**:idlpp是ROS2中的...
protobuf-2.5.0是Google Protocol Buffers(简称protobuf)的一个版本,它是一个高效、灵活的数据序列化库,常用于构建跨平台的通信协议和数据存储格式。Protocol Buffers是一种语言中立、平台中立的机制,可以将...
2. **消息定义**: 使用.proto文件定义数据结构,这是使用Protobuf的第一步。教程会解释如何编写.proto文件,包括定义消息类型、字段类型和编号。 3. **代码生成**: 使用`protoc`编译器将.proto文件转换为C语言的源...
Google Protobuf 2.6.0 是一个强大的、开源的序列化框架,它允许开发者将结构化数据序列化,类似于XML、JSON,但更小、更快、更简单。这个版本的Protobuf是2.x系列的一个稳定版本,发布于2015年,广泛应用于跨平台的...
使用google protobuf通过TCP传输文件
标题 "protobuf2+java" 指涉的是Google开源的Protocol Buffers(简称protobuf)的第二版与Java语言的结合使用。Protocol Buffers是一种高效的数据序列化协议,它允许开发者定义数据结构,然后生成能够在各种数据平台...
标题中的“Unity调用谷歌Protobuf简单案例”指的是在Unity游戏引擎中使用Google的Protocol Buffers(Protobuf)进行数据序列化和反序列化的实践教程。Protobuf是一种高效、跨平台的数据序列化协议,常用于网络通信和...
to-date version of the descriptor.proto file into the plugin jar under .p2\pool\plugins\com.google.eclipse.protobuf_2.3.2.201609161849.jar and restarted Eclipse which resolved this. -- @gfecher ...
google protobufgoogle protobufgoogle protobufgoogle protobufgoogle protobufgoogle protobufgoogle protobufgoogle protobuf