BSON
http://bsonspec.org/#/specificationで理解しようとしていますが、まだいくつかの疑問が残っています。
上記の Web サイトから例を挙げてみましょう。
{"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
ここでも文字列ですよね?