2017-02-14 20 views
1

После использования https://github.com/utdemir/bencoder для извлечения MetaInfo из одного торренте я вижу следующий текст в разделе «куски» из output-Понимание BitTorrent Кусочки Выход

This is an abbreviated portion of the output- 'pieces':'\x8f1g\xdb\x1e\x17\n(\xf9\xbb\xb0&\xa0\xadT9N\xa8L\x89\x97\xf79\x15\x07N

И после того, как смотреть на https://wiki.theory.org/BitTorrentSpecification I находятся под пониманием того, что этот выход IS-

[а] строка, состоящая из конкатенации всех 20-байтовых значений хэша SHA1, один за штуку (строка байт, то есть не urlencoded)

Однако я вижу постоянную обратную косую черту «\», и ​​мне интересно, это что-то вроде шестнадцатеричных кодов, поскольку SHA-1 обычно выводит шестнадцатеричный?

+0

yup, байты, представленные как hexa, когда ascii невозможно –

+0

Да, это байты в шестнадцатеричном представлении. Попробуйте положить '\ x68 \ x65 \ x6c \ x6c \ x6f' в оболочку Python (или b '\ x68 \ x65 \ x6c \ x6c \ x6f', если вы используете Python3.) – kirbuchi

+0

@kirbuchi, если буква "g" включен в эти представления, не выходит за рамки гексагона, так как шестнадцатеричные концы на «f» в буквенных представлениях –

ответ

1

Вывод, который вы видите из программы, кодируется как Python bytesliteral,
не были печатаемыми байтами, а ASCII экранирован.

\x8f1g\xdb\x1e\x17\n(\xf9\xbb\xb0&\xa0\xadT9N\xa8L\x89\x97\xf79\x15\x07N

\x8f => шестнадцатеричное 0x8F
1g => ASCII "1g"
\xdb\x1e\x17 => шестнадцатеричное 0xDB1E17
\n => Escape-последовательность означает ASCII строки (LF) (шестнадцатеричный 0x0A)
( => ASCII "("
\xf9\xbb\xb0 => шестнадцатеричный 0xF9BBB0
и др.

 Смежные вопросы

  • Нет связанных вопросов^_^