美文网首页
protobuf原理

protobuf原理

作者: mafa1993 | 来源:发表于2021-08-29 11:08 被阅读0次

    protobuf原理

    压缩算法。字典法

    1. 有一些标识一些字符,例如用2标识为a。3标识为b等
    2. 解码,将标识符解码成二进制数据
    3. 进行编码后,message(name:xx,id:xxx)就会变成1:xx,2:xxx

    protobuf生成过程

    1. protobuf把message转换成key-value存储,key和tag的转化公式 tag=(key<<3)|wirt_type
      • writ_type为数据类型的证书值
    2. value转换
      • 既不是大端也不是小端,会舍弃多余位数,int32类型的1只会占一个字节,而不是4个字节
      • 每个字节的第一位是个标识符,1代表后面还有数据要读,0表示到了结尾,存储时,先把后面的7位放到前面
      • 例如500 二进制数据为0001 1111 0100
      • protobuf存储为 1(标识位)110100(500的二进制后七位) 0(标识后面不可读了) 0000011(500从后往前溢出7位的部分)
      • 读取时,看到百世位是1,说明还有数据,继续读取,读取后面的放到前面
      • 存储时从后后往前读取 每七位加一个标识符存入一个字节
    3. tag长度不是固定,tag和value之间也没有分隔符
    4. 结构 tag1value1tag2value2
    5. 各种类型value组成
      • string : length+content

    相关文章

      网友评论

          本文标题:protobuf原理

          本文链接:https://www.haomeiwen.com/subject/sppwiltx.html