了解BSON表示法

Set*_*ish 4 bson

我试图从网站BSON网站了解BSON Notations.但是我无法理解相关背后的原因.

我还提到了以下问题,但由于以下原因我不相信.

问题1:不熟悉ruby实现

问题2:我理解字节分配.但不确定这些符号.

我想知道如何BSON Site中为以下示例形成bson对象

1.{"你好":"世界"}
2. {"BSON":["awesome",5.05,1986]}

Nic*_*ser 16

{"你好,世界"}

\x16\x00\x00\x00
  \x02 hello\x00 \x06\x00\x00\x00 world\x00
\x00
Run Code Online (Sandbox Code Playgroud)

(总计:22个字节)

前四个字节包含总长度为32位小端整数.

\x16\x00\x00\x00 =>十进制的22.

现在是第一个元素.第一个字节给出了数据类型.

\x02 =>这是一个UTF-8字符串.

然后是第一个元素的名称,作为以null结尾的字符串.

hello\x00

接下来是先前给定类型的元素的数据,在这种情况下是字符串.对于可扫描性(因此您可以在不需要时快速跳过),字符串以其长度开始,并以空值终止.

\x06\x00\x00\x00 =>这是长度6.

world\x00

现在会有后续元素,如果有的话.整个事件以空字节结束.

\x00


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

\x31\x00\x00\x00
  \x04 BSON\x00 \x26\x00\x00\x00
                  \x02 0\x00 \x08\x00\x00\x00 awesome\x00
                  \x01 1\x00 \x33\x33\x33\x33\x33\x33\x14\x40
                  \x10 2\x00 \xc2\x07\x00\x00
                \x00
\x00
Run Code Online (Sandbox Code Playgroud)

(总体:49字节,数组:38字节)

前四个字节包含总长度为32位小端整数.

\x31\x00\x00\x00 =>小数为49.

现在是第一个元素.第一个字节给出了数据类型.

\x04 =>这是一个数组.

然后是第一个元素的名称,作为以null结尾的字符串.

BSON\x00

接下来是先前给定类型的元素的数据,在这种情况下是数组.

[引用:"数组的文档是一个普通的BSON文档,其中包含键的整数,以0(..)开头"]

对于可扫描性并且因为它们本身就形成了文档,所以数组以它们的长度开始,并且以空值终止.

\x26\x00\x00\x00 =>小数是38.

现在是数组的第一个元素.第一个字节给出了数据类型.

\x02 =>这是一个UTF-8字符串.

然后是数组的第一个元素的名称,以null结尾.

0\x00 =>那是关键0.

接下来是先前给定类型的元素的数据,在这种情况下是字符串.字符串从它们的长度开始,并且以空值终止.

\x08\x00\x00\x00 =>长度8

awesome\x00

现在是数组的第二个元素.第一个字节给出了数据类型.

\x01 =>这是一个双浮点数.

然后是数组的第二个元素的名称,以null结尾.

1\x00 =>这是关键1.

接下来是先前给定类型的元素的数据,在这种情况下是双浮点数.

\x33\x33\x33\x33\x33\x33\x14\x40 =>那是5.5.

现在是数组的第三个元素.第一个字节给出了数据类型.

\x10 =>这是一个32位整数.

然后是数组的第三个元素的名称,以null结尾.

2\x00 =>这是关键2.

接下来是先前给定类型的元素的数据,在这种情况下是32位整数.

\xc2\x07\x00\x00 =>那是1986年.

该数组以空字节结束.

\x00

整个事件以空字节结束.

\x00