gpt4 book ai didi

bson - 理解 BSON 符号

转载 作者:行者123 更新时间:2023-12-04 21:53:08 28 4
gpt4 key购买 nike

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

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

Question 1 : 不熟悉 ruby 实现

Question 2 : 我明白了字节分配。但不确定符号。

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

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

最佳答案

{“你好”:“世界”}

\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 字符串。

然后是数组的第一个元素的名称,以空字符结尾。
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

关于bson - 理解 BSON 符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15761740/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com