Почему декодирование строки base64 в форме "b '...'" (с префиксом b из объекта Python bytes) дает неожиданные результаты? - PullRequest
1 голос
/ 25 апреля 2020

Я столкнулся со странной проблемой при использовании функции Python base64.b64decode в строках с b'...' в них. Это фрагмент кода, иллюстрирующий проблему.

>>> base64.b64encode(b"AAAA")
b'QUFBQQ=='
>>> s1 = "b'QUFBQQ=='"
>>> s2 = "QUFBQQ=="
>>> base64.b64decode(s1)
b'm\x05\x05\x05\x04'
>>> base64.b64decode(s2)
b'AAAA'

Результат из base64.b64encode(b"AAAA") копируется и сохраняется в виде строки s1. Я также копирую только байты (то есть символы внутри b'...') и сохраняю его как строку s2. При вызове base64.b64decode с s1 я получаю ерунду, а при вызове s2 дает ожидаемый результат. Я подозреваю, что символ ' вызывает некоторые проблемы, поскольку он не является допустимым символом base 64.

Что происходит в base64.b64decode(s1), что дает странный результат?

1 Ответ

1 голос
/ 25 апреля 2020

Когда вы устанавливаете

s1 = "b'QUFBQQ=='"

Тогда строка включает b и оба тика. Просто избавьтесь от двойных кавычек:

s1 = b'QUFBQQ=='

'b' за пределами одинарной кавычки означает интерпретацию его как байтового литерала.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...