Bencode
Bencode — это формат используемый p2p системой распространения файлов BitTorrent для хранения и передачи свободно структурированных данных.
Включает в себя четыре типа данных:
- строка байт,
- целое число,
- список (массив),
- словарь.
Bencode используется в .torrent файлах. Файл представляет из себя словарь в Bencode формате.
Кодирование
Bencode использует ASCII символы как разделители и цифры.
- Целое число записывается так i<число в base 10 формате>e. Отрицательные числа записываются с знаком минуса перед числом, числа не должны начинаться с нуля если значение числа не 0. Число 42 будет выглядеть так "i42e".
- Строка байт <размер>:<содержимое>. Размер это число в base 10 формате; Содержимое это непосредственно данные представленные цепочкой байт. Строка "spam" в этом формате будет выглядеть так "4:spam".
- Список (массив) l<содержимое>e . Содержимое включает в себя любые Bencode типы следующие друг за другом. Список состоящий из строки "spam" и числа 42 будет выглядеть так: "l4:spami42ee".
- Словарь d<содержимое>e. Содержимое состоит из пар Ключ-Значение которые следуют друг за другом. Ключ может быть только строкой байт. Значение может быть любым Bencode элементом. Если сопоставить значениям 42 и "spam" ключи "foo" и "bar" получится: "d3:bar4:spam3:fooi42ee". (Если добавить пробелы между элементами можно будет легче понять структуру: "d 3:bar 4:spam 3:foo i42e e".)