Я работаю с модулем сокета python, играя с клиентом udp, который я написал. Мне не нравится, как он обрабатывает мои шестнадцатеричные литералы. пример:Python 2.7: как предотвратить автоматическое декодирование от шестнадцатеричного до строки
>>> querydns = '\xb9\x1b\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x03\x77\x77\x77\x06\x67\x6f\x6f\x67\x6c\x65\x03\x63\x6f\x6d\x00\x00\x01\x00\x01'
>>> querydns
'\xb9\x1b\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x03www\x06google\x03com\x00\x00\x01\x00\x01'
>>> replydata
'\xb9\x1b\x81\x80\x00\x01\x00\x06\x00\x00\x00\x00\x03www\x06google\x03com\x00\x00\x01\x00\x01\xc0\x0c\x00\x01\x00\x01\x00\x00\x00\xd4\x00\[email protected]\xe9\xb0j\xc0\x0c\x00\x01\x00\x01\x00\x00\x00\xd4\x00\[email protected]\xe9\xb0i\xc0\x0c\x00\x01\x00\x01\x00\x00\x00\xd4\x00\[email protected]\xe9\xb0\x93\xc0\x0c\x00\x01\x00\x01\x00\x00\x00\xd4\x00\[email protected]\xe9\xb0g\xc0\x0c\x00\x01\x00\x01\x00\x00\x00\xd4\x00\[email protected]\xe9\xb0h\xc0\x0c\x00\x01\x00\x01\x00\x00\x00\xd4\x00\[email protected]\xe9\xb0c'
Обратите внимание, как он автоматически декодирует часть шестнадцатеричного кода в символы? Я хочу иметь дело только с шестнадцатеричными значениями, без @ или www. Есть ли простой способ остановить это автоматическое декодирование?
я поставил ответ, но чем больше я думаю об этом, я не понимаю, почему вы хотели бы изменить печатаемые символы, которые имеют смысл для нас людей, чтобы заставить их остаться в гекс не делает много смысла для меня –
Короткий предел: «автоматическое декодирование», как вы его называете, происходит только при выводе строки в интерпретаторе. Или когда вы используете 'repr (querydns)'. И это фактически работает наоборот: он кодирует небезопасные символы в форму '\ xXX', поэтому представление может быть скопировано для повторного создания строки. – spectras