设为首页 加入收藏

TOP

BSON结构
2015-11-21 01:37:11 来源: 作者: 【 】 浏览:0
Tags:BSON 结构

BSON结构

flyfish 2015-7-24

主要解释bsonspec.org网站上的两个例子


{"hello": "world"}


hello为key,world为value 对应的是


\x16\x00\x00\x00
\x02 
hello\x00 
\x06\x00\x00\x00world\x00
\x00



解释每一行的意思


\x16\x00\x00\x00
\x表示16进制的方式
4个字节表示文档的大小,包括文档末尾的'\0','\0'是\x00 0x16十进制是22,这个文档的大小是22个字节
采用小端(Little Endian) 原文:Each type must be serialized in little-endian format.
每一种类型必须按照little-endian格式序列化。


\x02
一个字节表示value的类型,通过查看bsonspec 文档
原文:"\x02" e_name string UTF-8
\x02 表示value的类型是string,字符串编码使用的是UTF-8


hello\x00
表示以'\0'结尾的字符串


\x06\x00\x00\x00world\x00
\\x06\x00\x00\x00 前4个字节表示以'\0'结尾的字符串world的长度

\x00
结束符


{"BSON": ["awesome", 5.05, 1986]}

原文:the array ['red', 'blue'] would be encoded as the document {'0': 'red', '1': 'blue'}. The keys must be in ascending numerical order.
数组['red', 'blue']将要编码为{'0': 'red', '1': 'blue'},key必须按照数值大小递增排序(升序)。
也就是["awesome", 5.05, 1986]将被编码为{ "0":"awesome", "1":5.05,"2":1986}
{"BSON": [ "0":"awesome", "1":5.05,"2":1986]}

对应是

\x31\x00\x00\x00
\x04BSON\x00
\x26\x00\x00\x00
\x02\x30\x00\x08\x00\x00\x00awesome\x00
\x01\x31\x00\x33\x33\x33\x33\x33\x33\x14\x40
\x10\x32\x00\xc2\x07\x00\x00
\x00
\x00



解释每一行的意思
\x31\x00\x00\x00
4个字节表示文档的大小,x31的10进制是49,这个文档的大小是49个字节


\x04BSON\x00
原文:"\x04" e_name document Array
\x04表示value的类型是数组表示的document
BSON\x00 表示以'\0'结尾的字符串


\x26\x00\x00\x00
4个字节表示数组的大小即中括号的内容,x26的10进制是38


\x02\x30\x00\x08\x00\x00\x00awesome\x00
\x02 表示value的类型是string
x30表示key,字符0的ASCII码是48,16进制是x30
纵向看正好是x30,x31,x32
\x08\x00\x00\x00 4个字节表示awesome\x00 长度


\x01\x31\x00\x33\x33\x33\x33\x33\x33\x14\x40

\x01
原文\x01" e_name double 64-bit binary floating point
表示64位的二进制浮点数
x31\x00表示以'\0'结尾的字符串1,字符1的ASCII码是x31
x33\x33\x33\x33\x33\x33\x14\x40
double的5.5转换成16进制为40 14 33 33 33 33 33 33


\x10\x32\x00\xc2\x07\x00\x00
原文:"\x10" e_name int32 32-bit integer
\x10表示32位的整数
\x32\x00表示以'\0'结尾的字符串2,字符2的ASCII码是x32
\xc2\x07\x00\x00
也就是16进制的7c2转换成10进制是1986 \x00

\x00

结束符



】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇一次归档日志被删除导致offline的.. 下一篇Excel读取数据库表

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: