BSONhttp://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ここでも文字列ですよね?