https://zhuanlan.zhihu.com/p/670846500 极简例子放最前面
"[{ name 张三 age 18 }
{ photoBytes 256(\x00...\xFF) }]"
json 因为盲目抄 c/java, 用转义符描述二进制, 占用 400%空间
base64是 133% 空间且不能用二进制编辑器可读
现有的 schemaful 的protobuf,msgpack 和 schemaless 的 UBJSON BJData 数据类型都
很复杂, 多种整型浮点;
本方案直接存二进制,是100%空间
不使用 冒号: 引号''"" 空白和换行 转义符\
只有一种原子,utf8字符串或字节数组 例如:
5(hello)
3(\x01\x02\x03)
使用长度前缀,避免转义符,前缀也是可读十进制,
括号用于增强可读性,校验纠错
跟JSON一样的数组和关联数组,例如:
[{4(key1)6(value1)4(key2)6(value2)}{5(bytes)3(\x01\x02\x03)}]
相当于json的 [{"key1":"value1", "key2":"value2"}, {"bytes":"\x01\x02\x03"}]
允许在无歧义的情况下省略长度前缀和括号
--
修改:ABCDEFGHJKLM FROM 111.201.28.*
FROM 123.113.97.*