“Mic”这个字符,需要根据ASCII对照表转化为数字。

M =77、i=105、c=99

所以结果为 77 105 99

大家肯定有个疑问,这里的结果为什么直接就是ASCII编码的值呢?怎么没有做压缩呢?有没有同学能够回答出来

原因是,varint是对字节码做压缩,但是如果这个数字的二进制只需要一个字节表示的时候,其实最终编码出来的结果是不会变化的

还有两个数字,3 和16代表什么呢?那就要了解protobuf的存储格式了

Protobuf序列化的原理-字符如何转化为编码相关推荐

  1. Protobuf序列化的原理

    我们可以把序列化以后的数据打印出来看看结果 public static void main(String[] args) { UserProtos.User user = UserProtos.Use ...

  2. Protobuf序列化的原理-负数的存储

    在计算机中,负数会被表示为很大的整数,因为计算机定义负数符号位为数字的最高位,所以如果采用varint编码表示一个负数,那么一定需要5个比特位.所以在protobuf中通过sint32/sint64类 ...

  3. Protobuf序列化的原理-protobuf的基本应用

    使用protobuf开发的一般步骤是 1. 配置开发环境,安装protocol compiler代码编译器 2. 编写.proto文件,定义序列化对象的数据结构 3. 基于编写的.proto文件,使用 ...

  4. Protobuf序列化的原理-总结

    Protocol Buffer的性能好,主要体现在 序列化后的数据体积小 & 序列化速度快,最终使得传输效率高,其原因如下: 序列化速度快的原因: a. 编码 / 解码 方式简单(只需要简单的 ...

  5. Protobuf序列化的原理-存储格式

    protobuf采用T-L-V作为存储方式 tag的计算方式是 field_number(当前字段的编号) << 3 | wire_type 比如Mic的字段编号是1 ,类型wire_ty ...

  6. Protobuf序列化的原理-varint

    先说第一种,我们先来看age=300这个数字是如何被压缩的 这两个字节字节分别的结果是:-84 .2 -84怎么计算来的呢? 我们知道在二进制中表示负数的方法,高位设置为1, 并且是对应数字的二进制取 ...

  7. Protobuf序列化原理

    一.Protobuf序列化原理简介 1.1序列化 序列化是将数据结构或对象转换成二进制字节流的过程. Protobuf对于不同的字段类型采用不同的编码方式和数据存储方式对消息字段进行序列化,以确保得到 ...

  8. 【Android Protobuf 序列化】Protobuf 服务器与客户端通信 ( TCP 通信中使用 Protobuf )

    文章目录 一.TCP 粘包和分包 二.TCP 粘包和分包解决方案 三.客户端 Android 应用使用 Protobuf 四.服务器端 Java 服务器使用 Protobuf 五.参考资料 一.TCP ...

  9. Android Protobuf应用及原理

    前言 之前一直忙于移动端日志SDK Trojan的开源工作,已十分稳定地运行在饿了么团队App中,集成了日志加密和解密功能.哎呀,允许我卖个狗皮膏药,不用不知道,用了就知道,从此爱不释手,Trojan ...

最新文章

  1. 魔兽War3按键精灵Ⅱ(2012-9-4)
  2. rabbitmq python amqp user_python 与rabbitmq
  3. VTK:图片之ImagePermute
  4. C语言字符串相关一级指针内存模型
  5. 架构师必须掌握的 10 条设计原则
  6. 输入框限制只能输入数字,正数、负数、0,最多两位小数;数字输入框可以输入负数,并最多保留两位小数;el-number-input去掉四舍五入和自动补齐小数;
  7. (王道408考研数据结构)第八章排序-第四节1:冒泡排序
  8. ssh 免密登录并用脚本群起服务
  9. Android 内存泄漏检测工具
  10. Silverlight 4 tools
  11. Deep Cosine Metric Learning for Person Re-Identification
  12. JAVA调用WebService的三种方法
  13. 做图像处理的必备图库
  14. python进行图像的风格转换
  15. “ODM OEM OBM的区别”网址汇总
  16. 201571030135/201571030137《小学四则运算练习软件》结对项目报告
  17. 2021-09-30 js手动轮播图
  18. 【计算机系统基础4】程序的机器级表示
  19. Kindle资源-史上最全60GB的Kindle电子书资源网盘打包下载
  20. ubuntu如何查看当前的ROS发行版本

热门文章

  1. 文件上传的注意细节(PHP)
  2. tensorflow-RNN和LSTM
  3. Selenium2+python自动化70-unittest之跳过用例(skip)
  4. C#--记录用户程序退出时间日志
  5. Spring MyBatis多数据源分包
  6. SQL Server DATEDIFF() 函数计算时间差
  7. power design教程
  8. WordPress菜单“显示选项”无法显示的解决办法
  9. 省常中模拟 Test4
  10. Linux下部署MyEclipse开发环境