做个笔记。
编码过程:
//计算一个整数在varint编码下所占的字节数,
public static int computeRawVarint32Size(final int value) {if ((value & (0xffffffff << 7)) == 0) return 1;
if ((value & (0xffffffff << 14)) == 0) return 2;
if ((value & (0xffffffff << 21)) == 0) return 3;
if ((value & (0xffffffff << 28)) == 0) return 4;
return 5;
}
public void writeRawVarint32(int value) throws IOException {
while (true) {
if ((value & ~0x7F) == 0) {//如果最高位是0
writeRawByte(value);//直接写
return;
} else {
writeRawByte((value & 0x7F) | 0x80);//先写入低7位,最高位置1
value >>>= 7;//再写高7位
}
}
}
解码过程:
public int readR