Подтвердить что ты не робот

Преобразование строки в и из базы 64

Я пытаюсь написать две программы, которые преобразуют строку в base64, а затем другую, которая берет строку с кодировкой base64 и преобразует ее обратно в строку.
до сих пор я не могу пройти мимо кодировки base64, поскольку я продолжаю получать ошибку

TypeError: expected bytes, not str

мой код выглядит так до сих пор

def convertToBase64(stringToBeEncoded):
import base64
EncodedString= base64.b64encode(stringToBeEncoded)
return(EncodedString)
4b9b3361

Ответ 1

Строка уже "декодирована", поэтому класс str не имеет функции "декодирования". Таким образом:

AttributeError: type object 'str' has no attribute 'decode'

Если вы хотите декодировать массив байтов и превратить его в строковый вызов:

the_thing.decode(encoding)

Если вы хотите закодировать строку (превратить ее в массив байтов), вызовите:

the_string.encode(encoding)

С точки зрения базы 64 вещи: Использование 'base64' в качестве значения для кодирования выше дает ошибку:

LookupError: unknown encoding: base64

Откройте консоль и введите следующее:

import base64
help(base64)

Вы увидите, что base64 имеет две очень удобные функции: b64decode и b64encode. b64 decode возвращает массив байтов, а b64encode требует массив байтов.

Чтобы преобразовать строку в представление base64, вам сначала нужно преобразовать ее в байты. Мне нравится utf-8, но используйте любую кодировку, в которой вы нуждаетесь...

import base64
def stringToBase64(s):
    return base64.b64encode(s.encode('utf-8'))

def base64ToString(b):
    return base64.b64decode(b).decode('utf-8')