赞
踩
当数据类型为fixed64,sfixed64,double时,变量值采用的是64-bit编码方式;即固定占用8个字节传输。
无论你传输的数是大数,还是小数(如1)。固定消耗8个字节。
因此,64-bit编码方式使用的场景?
如果某些值经常是大数的话,可以使用64-bit编码方式;
因为,Varint不适合负数编码,不适合大数编码。
(Varint编码,每个字节的第1个bit是符号位,从另外一个角度看,就是浪费了1个bit,因此,Varint编码适合数值比较小的场景,如小于128)
1、当数据类型为fixed64时,如何编码?(固定占用8字节,适合数值比较大的场景) |
如果数值比 2^56 大的话,64-bit 这个类型比 uint64 高效,如果数值比 2^28 大的话,32-bit 这个类型比 uint32 高效
参考网址
https://www.jianshu.com/p/73c9ed3a4877?share_token=6ed3cde5-2419-4a9e-98f9-2743f7f0e70f
fixed32类型,不再解释了。原理一样。
2、当数据类型为sfixed64时,如何编码?(固定占用8字节,适合负数绝对值比较大的场景) |
sfixed64,针对的是负数场景。
如果负数的绝对值比较小的话,使用sfixded 是浪费的,不划算。
sfixed32类型,不再介绍了,原理一样。
数据类型为double时,固定占用8个字节;具体不研究了,没太搞懂。
float,不再具体研究了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。