data
- это обычная строка в кодировке base64, содержащая только символы из набора base64 . Проблема действительно в конце /
, потому что длина строки base64 должна делиться на 4 без остатка. Так что там должно быть дополнение на конце, если это необходимо для достижения этого. С /
в конце data
имеет длину 45 символов, что означает 44 символа base64, которые могут быть декодированы до 33 байтов, а затем последний символ, который кодирует только 6 бит.
Простое добавление заполнения не будет решите это, потому что вы можете добавить только два дополнительных символа (=
), но вам нужно еще один для пропущенных двух битов.
Таким образом, вы можете обрезать его так:
lenmax = len(data) - len(data)%4
print(base64.b64decode(data[0:lenmax]).decode())
или добавить что-то вроде 0==
, чтобы заполнить его до 48 символов. Но тогда вы получите сообщение об ошибке в decode()
, и я не дружу с выдумкой дополнительных данных.
Или попросите / проверьте код отправителя, чтобы выяснить, почему это так одиноко /
в конце.