varint编码

varint是一种编码方式,用于对整数进行压缩和编码。它是一种可变长度的编码方法,可以用来对任何整数进行编码,而不需要预先知道该整数的大小。被广泛应用于网络通信协议中,例如Google的Protocol Buffers。

int占4个byte

varint长度可变,占1~5个byte,其中每个byte的最高位表示是否之后还有字节,1表示有,0表示无。

varint一般是小端序存储,以下intvarint都以小端序为例。

表示数字 int varint
255 11111111 00000000 00000000 00000000 11111111 00000001
1 00000001 00000000 00000000 00000000 00000001
256 00000000 00000001 00000000 00000000 10000000 00000010
2^31 - 1 11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 00000111
-5 11111011 11111111 11111111 11111111 11111011 11111111 11111111 11111111 00000111

varint本身的目的就是为了压缩编码,比如表示数字1,int需要4个字节,varint只需要1个字节,能节省3个字节;但是varint表示2^31-1或-5需要5个字节,由此可见其不适用于很大的数或负数。

返回顶部