bencode и его особенности
Прочитал протокол от корки до корки несколько раз но так и не смог понять , почему некоторые спецификаторов формата дублируются,например 'll' вместо 'l', в спецификации ни слова про дублирования. Может кто то даст ссылку или вкратце обьяснит с чем связанно. Так же иногда дублируется символ конца 'e' и выглядит так 'ee'
Ответы (1 шт):
Давайте посмотрим, как должно в таком кодировании выглядеть число 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 # ]