对于应用内没有非持久化的需求的话,比如说IM没有一种格式,protobuf这种通用的格式也并不是一个好的做法,微信IM消息的私有二进制协议肯定也不是protobuf格式的。倒是微信朋友圈表结构的lvbuffer字段可以参考下,第2-4个字节是一个int型的数据比如说aId,第4-8个字节又是另一个数据,比如说bId。第9到第200字节是字符串内容,长度是多少呢,先读取2个字节的长度,第9到第10字节是这段字符串的长度,长度为190个字节,然后读第11到第200字节,就是字符串的内容。这样定死掉的私有格式,比protobuf好太多,protobuf为了协议的扩展和完备性,又是key-value对应,每个存储还得有一个字节指定type,是定长存储还是变长存储,浪费空间。