bencode и его особенности

Прочитал протокол от корки до корки несколько раз но так и не смог понять , почему некоторые спецификаторов формата дублируются,например 'll' вместо 'l', в спецификации ни слова про дублирования. Может кто то даст ссылку или вкратце обьяснит с чем связанно. Так же иногда дублируется символ конца 'e' и выглядит так 'ee'


Ответы (1 шт):

Автор решения: KoVadim

Давайте посмотрим, как должно в таком кодировании выглядеть число 10. Это будет i10e.

Как кодируется массив? l<содержимое>e.

А как же будет выглядеть массив на 2 элемента 1 и 2? (то есть, массив [1,2])? Это будет так l i1e i2e e (пробелы добавлены для читаемости). Вот и получается в конце две буквы e. Но одна - это конец записи числа, а вторая - конец списка.

А теперь сложнее. А как будет выглядеть список(массив), внутри которого находится вышеуказанный массив? l l i1e i2e e e (пробелы снова для читаемости). Да у нас тут две l и три(!!!) e

Еще раз, если это не очевидно, в виде дерева (# - это начало комментария)

l       # [
  l     #   [
    i1e #     1,
    i2e #     2
  e     #   ]
e       # ]
→ Ссылка