Protocol Buffer数据排列
来源:互联网 发布:sql替换字符串 编辑:程序博客网 时间:2024/06/18 07:42
Google Protocol Buffer 的 Encoding
Protobuf 序列化后所生成的二进制消息非常紧凑,这得益于 Protobuf 采用的非常巧妙的 Encoding 方法。
考察消息结构之前,让我首先要介绍一个叫做 Varint 的术语。
Varint 是一种紧凑的表示数字的方法。它用一个或多个字节来表示一个数字,值越小的数字使用越少的字节数。这能减少用来表示数字的字节数。
比如对于 int32 类型的数字,一般需要 4 个 byte 来表示。但是采用 Varint,对于很小的 int32 类型的数字,则可以用 1 个 byte 来表示。当然凡事都有好的也有不好的一面,采用 Varint 表示法,大的数字则需要 5 个 byte 来表示。从统计的角度来说,一般不会所有的消息中的数字都是大数,因此大多数情况下,采用 Varint 后,可以用更少的字节数来表示数字信息。下面就详细介绍一下 Varint。
Varint 中的每个 byte 的最高位 bit 有特殊的含义,如果该位为 1,表示后续的 byte 也是该数字的一部分,如果该位为 0,则结束。其他的 7 个 bit 都用来表示数字。因此小于 128 的数字都可以用一个 byte 表示。大于 128 的数字,比如 300,会用两个字节来表示:1010 1100 0000 0010
下图演示了 Google Protocol Buffer 如何解析两个 bytes。注意到最终计算前将两个 byte 的位置相互交换过一次,这是因为 Google Protocol Buffer 字节序采用 little-endian 的方式。
- Protocol Buffer数据排列
- protocol buffer数据转换
- Protocol buffer数据传递
- Protocol Buffer数据编码
- Protocol Buffer技术详解(数据编码)
- Protocol Buffer技术详解(数据编码)
- Protocol Buffer技术详解(数据编码)
- Protocol Buffer 混合语言数据标准
- Protocol Buffer技术详解(数据编码)
- Protocol Buffer技术详解(数据编码)
- Protocol Buffer技术详解(数据编码)
- Protocol Buffer技术详解(数据编码)
- Protocol Buffer技术详解(数据编码)
- Protocol Buffer技术详解(数据编码)
- Protocol Buffer技术详解(数据编码)
- Protocol Buffer技术详解(3)-数据编码
- protocol buffer
- protocol buffer
- 利用JDBC连接取数据并导入到EXCEL中
- 男性保持健康有“三招”
- SystemParametersInfo (SPI_GETNONCLIENTMETRICS ... 返回false的原因分析
- 移动互联网时代:如何用手机精细化管理企业?
- 用C++实现HTTP服务器 - 如何控制一个套接字的发送带宽
- Protocol Buffer数据排列
- IIS7.0 报错 检测到在集成的托管管道模式下不适用的 ASP.NET 设置
- c语言的课堂作业1
- 字符串匹配算法
- Windows共享文件夹权限设置
- AE空间九关系查询
- C++中export关键字的尴尬处境
- 从综合服务到手机APP应用 网即通迎来新拐点
- WINDOWS远程桌面连接