【问题标题】:Understanding BSON Notation理解 BSON 表示法
【发布时间】:2013-05-11 20:49:20
【问题描述】:

我试图从 BSON Site 网站了解 BSON 符号。但是我无法理解相关性背后的原因。

我也提到了以下问题,但由于以下原因不服。

Question 1 : 不熟悉 ruby 实现

Question 2 :我理解字节分配。但不确定符号。

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

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

【问题讨论】:

    标签: bson


    【解决方案1】:

    {"hello": "world"}

    \x16\x00\x00\x00
      \x02 hello\x00 \x06\x00\x00\x00 world\x00
    \x00
    

    (总共:22 字节)

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

    \x16\x00\x00\x00 => 这是十进制的 22。

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

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

    然后是第一个元素的名称,以空字符结尾的字符串。

    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
    

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

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

    \x31\x00\x00\x00 => 那是十进制的 49。

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

    \x04 => 这是一个数组。

    然后是第一个元素的名称,以空字符结尾的字符串。

    BSON\x00

    接下来是先前给定类型的元素的数据,在本例中为数组。

    [引用:“数组的文档是一个普通的 BSON 文档 键的整数,从 0 (..)"]

    开始

    为了便于扫描,并且因为它们自己形成文档,数组以它们的长度开始,并且以空值结尾。

    \x26\x00\x00\x00 => 那是十进制的 38。

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

    \x02 => 那是一个 UTF-8 字符串。

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

    0\x00 => 这是密钥 0。

    接下来是先前给定类型的元素的数据,在本例中为字符串。 字符串以其长度开始,并以空值结尾。

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

    awesome\x00

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

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

    然后是数组的第二个元素的名称,以空字符结尾。

    1\x00 => 这是关键 1。

    接下来是先前给定类型的元素的数据,在本例中是双浮点数。

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

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

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

    然后是数组的第三个元素的名称,以空字符结尾。

    2\x00 => 这是关键 2。

    接下来是前面给定类型中元素的数据,在本例中为 32 位整数。

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

    数组以空字节结束。

    \x00

    整个事情以一个空字节结束。

    \x00

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    相关资源
    最近更新 更多