二进制编码
二进制编码
对于仅在组织内部使用的数据,使用最小公分母编码格式的压力较小。例如,可以选择更紧凑或更快的解析格式。虽然对小数据集来说,收益可以忽略不计,但一旦达到
这些格式中的一些扩展了一组数据类型(例如,区分整数和浮点数,或者增加对二进制字符串的支持
{
"userName": "Martin",
"favoriteNumber": 1337,
"interests": ["daydreaming", "hacking"]
}
我们来看一个
- 一个字节
0x83
表示接下来是3 个字段(低四位= 0x03
)的对象object (高四位= 0x80
) (如果想知道如果一个对象有15 个以上的字段会发生什么情况,字段的数量塞不进4 个bit 里,那么它会用另一个不同的类型标识符,字段的数量被编码两个或四个字节) 。 - 第二个字节
0xa8
表示接下来是8 字节长的字符串(最高四位= 0x08 ) 。 - 接下来八个字节是
ASCII 字符串形式的字段名称userName
。由于之前已经指明长度,不需要任何标记来标识字符串的结束位置(或者任何转义) 。 - 接下来的七个字节对前缀为
0xa6
的六个字母的字符串值Martin
进行编码,依此类推。
二进制编码长度为
