Почему это называется BSON?

Значит, BSON сериализован в формате JSON, верно?

{"hello": "world"} "\ x16 \ x00 \ x00 \ x00 \ x02hello \ x00 \ x06 \ x00 \ x00 \ x00world \ x00 \ x00 "

Но почему он называется двоичным Json? Что означает двоичный код?

Я всегда склонен связывать двоичный код с 10101010101. Но формат сериализации BSON, приведенный выше, не был в форме 101010101010.

Может ли кто-нибудь объяснить мне, что здесь означает двоичный файл, чтобы я понял, почему он называется двоичным JSON?

9
задан Justin Johnson 24 August 2010 в 07:46
поделиться

2 ответа

Это двоичный, а не текстовый. В то время как JSON - это читаемый человеком текст, BSON - это двоичные данные (только байты). Вы могли бы записать его как 1001010 и т.д., но чаще всего показывают каждый байт за раз (так, \ x16 - это просто шестнадцатеричный 16, то есть десятичный байт 22). В основном «двоичный» здесь используется для сравнения с текстовыми данными, не говоря уже о том, что на самом деле это база 2, в частности.

Это означает, что вы можете использовать BSON только в ситуациях, когда вы можете передавать произвольные двоичные данные. Например, если вы хотите встроить BSON в XML-документ (по какой-либо причине!), Вам придется сначала его закодировать в base64, потому что XML - это текстовое представление.

20
ответ дан 4 December 2019 в 08:31
поделиться

Двоичный код на самом деле является неправильным, поскольку все на вашем компьютере является "двоичным" на каком-то уровне. Двоичный, когда дело доходит до форматов файлов или сетевых потоков, означает, что их нелегко понять человеку. Он также имеет тенденцию быть компактным.

Примеры текстовых или «человекочитаемых» (понятных человеку) форматов файлов и потоков:

Примеры «бинарных» форматов файлов и потоков:

Самое важное здесь то, что понятные человеку форматы требуют гораздо меньше объяснений, если их просто взломать и начать читать. Для объяснения форматов двоичных файлов могут потребоваться целые книги :)

Однако формат не обязательно является чисто «двоичным» или понятным только человеку. Например, вы, вероятно, могли бы понять ряд однозначных чисел без пробелов, которые представляют собой массив однозначных чисел. Вы, вероятно, не могли понять последовательность из 48 чисел (без пробелов), которые представляют значения x, y и z для 16 трехмерных вершин, даже если вы можете их «читать». Кроме того, есть пример Skeet с закодированными «двоичными» данными, особенно если они встроены в более понятный для человека формат.

4
ответ дан 4 December 2019 в 08:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: