Преобразование шестнадцатеричного представления в фактические байты в Python

мне нужно загрузить третий столбец этого текстового файла в виде шестнадцатеричной строки

http://www.netmite.com/android/mydroid/1.6/external/skia /emoji/gmojiraw.txt

>>> open('gmojiraw.txt').read().split('\n')[0].split('\t')[2]
'\\xF3\\xBE\\x80\\x80'

Как открыть файл, чтобы получить третий столбец в виде шестнадцатеричной строки:

'\xF3\xBE\x80\x80'

Я также попробовал двоичный режим и шестнадцатеричный режим, но безуспешно.

6
задан tzot 18 September 2010 в 01:29
поделиться

4 ответа

Вы можете:

  1. Удалите \ x -es
  2. Используйте .decode ('шестнадцатеричный') в результирующей строке

Код:

>>> '\\xF3\\xBE\\x80\\x80'.replace('\\x', '').decode('hex')
'\xf3\xbe\x80\x80'

Обратите внимание на соответствующую интерпретацию обратной косой черты. Когда строковое представление '\ xf3', это означает, что это однобайтовая строка со значением байта 0xF3. Когда вы вводите '\\ xf3', это означает строку, состоящую из 4 символов: \ , x , f и 3

7
ответ дан 8 December 2019 в 12:17
поделиться

Если вы доверяете источнику, вы можете использовать eval('"%s"' % data)

0
ответ дан 8 December 2019 в 12:17
поделиться

Если вы используете Python2.6 +, вот безопасный способ использования eval

>>> from ast import literal_eval
>>> item='\\xF3\\xBE\\x80\\x80'
>>> literal_eval("'%s'"%item)
'\xf3\xbe\x80\x80'
5
ответ дан 8 December 2019 в 12:17
поделиться

Вычеркнув «\ x» из ответа Эли, вы можете просто сделать:

int("F3BE8080",16)
0
ответ дан 8 December 2019 в 12:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: