【发布时间】:2013-04-16 16:46:31
【问题描述】:
我试图通过http://bsonspec.org/#/specification 了解BSON,但仍有一些问题。
让我们以上面的网站为例:
{"hello": "world"} → "\x16\x00\x00\x00\x02hello\x00\x06\x00\x00\x00world\x00\x00"
问题 1
在上面的例子中,对于编码后的字节结果,双引号实际上不是结果的一部分,对吧?
问题 2
我知道the first 4 bytes \x16\x00\x00\x00 是整个 BSON 文档的大小。
它是little endian 格式。但为什么?为什么不接受big endian?
问题 3
示例文档的大小怎么是\x16,即22?
问题 4
通常,如果我想自己编码文档,我如何计算文档的大小?我认为我的问题主要是如何确定UTF-8 字符串的大小?
我们再举一个例子:
{"BSON": ["awesome", 5.05, 1986]}
→
"\x31\x00\x00\x00\x04BSON\x00\x26\x00\x00\x00\x020\x00\x08\x00\x00
\x00awesome\x00\x011\x00\x33\x33\x33\x33\x33\x33\x14\x40\x102\x00\xc2\x07\x00\x00
\x00\x00"
问题 5
在这个例子中,有一个数组。根据规范,对于数组,它实际上是{key, value} 对的列表,而键是0、1 等。我的问题是0、1 这里也是字符串,对吧?
【问题讨论】: