Bencode
Bencode - это формат данных . Именно через обмен - протокол BitTorrent используется для хранения и обмена данными.
Формат поддерживает четыре типа данных .
- Целые числа .
- Струны переменной длины.
- Списки.
- Ассоциативные списки .
Bencode используется, помимо прочего, в .torrentфайлах. Стандарт BitTorrent указывает на то, что эти файлы в спецификации также называются файлами MetaInfo, которые должны быть ассоциативными списками Bencodete.
Поскольку это относительно простой алгоритм, Bencode может быть легко реализован и проанализирован . Он также невосприимчив к некоторым проблемам, с которыми часто сталкиваются двоичные форматы. Например, порядок байтов не имеет значения.
Кодирование
Bencode использует буквы ASCII в качестве разделителей.
числа
Числа i<zahl>eкодируются как. Это <zahl>номер версии ASCII с основанием 10. Отрицательные числа записываются со знаком минус. Bencode не поддерживает числа с фиксированной или плавающей запятой .
| количество | Bencode |
|---|---|
| −234 |
i-234e
|
| 0 |
i0e
|
| 29410 |
i29410e
|
Струны
Строки <länge>:<inhalt>выводятся как. Вот <länge>длина, основание 10 и <inhalt>сама строка. Пустые строки выводятся с нулевой длиной.
| Строка | Bencode |
|---|---|
| −234 |
0:
|
| Привет мир |
10:Hallo Welt
|
Списки
Списки l<inhalt>eвыводятся как. Это <inhalt>линейные, закодированные элементы списка в том порядке, в котором они должны появляться. Список может содержать смесь разных типов данных (например, смесь чисел и строк). Пустой список leвыводится как (т.е. без содержимого).
| содержание | Bencode |
|---|---|
| [] |
le
|
| [595] |
li595ee
|
| [Всем привет] |
l5:Halloe
|
| [-343, Здравствуйте, 555, [], [5]] |
li-343e5:Halloi555eleli5eee
|
Словари
Ассоциативные списки, также называемые словарями на английском языке (и в спецификации) , отображаются в этой форме, как и обычные списки d<inhalt>e. Контент состоит из связанных пар двух элементов, ключа и значения . Порядок пар должен быть лексокографическим . Пустой словарь deвыводится как.
| содержание | Bencode |
|---|---|
| {} |
de
|
| {Имя => Томас, возраст => 34} |
d4:Name6:Thomas5:Alteri34ee
|
Смотри тоже
Индивидуальные доказательства
- ↑ Спецификация протокола Bit Torrent . BitTorrent.org. Проверено 8 октября 2018 года.
- ↑ Спецификация BitTorrent v1.0: Bencoding . Theory.org. Проверено 9 октября 2018 года.