Мне нужно преобразовать строку, например «А» , в строку двоичного кода, например «01100011» , потом обработать немного двоичный код, пропустив его по функции «Исключающее ИЛИ» с другим двоичным кодом, например «01100011» с «11000010» , тогда выйдет «10100001» , и обратно перевести получившийся код в читаемую строку, например в «Т» . При этом, я хочу использовать русскую, английскую и украинскую раскладку и цифры, со знаками припинания. Не подскажете, как это сделать на Python 3? Вопрос состоит в том как в Python преобразовать строку в двоичный код и обратно используя любой алгоритм кодировки?
Отслеживать
14.2k 3 3 золотых знака 18 18 серебряных знаков 29 29 бронзовых знаков
задан 7 сен 2017 в 17:12
191 1 1 золотой знак 2 2 серебряных знака 11 11 бронзовых знаков
Вы можете привести пример входной и выходной строк и алгоритм получения ‘T’ из «11000010» ?
7 сен 2017 в 17:19
Нет, алгоритм кодировки может быть любым, хоть МТК-2 🙂 Мне нужны функции, которые быстро переведут текст в двоичный код, любым способом!
Перевод числа в двоичную систему за два шага!!!
7 сен 2017 в 17:25
Т.е. вопрос состоит в том как в Python преобразовать строку в двоичный код и обратно используя любой алгоритм кодировки? 😉
7 сен 2017 в 17:29
Да, именно это мне и требуется)
7 сен 2017 в 18:11
7 сен 2017 в 21:35
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Чтобы произвольный текст превратить в «01»-строки (биты):
def text_to_bits(text, encoding=’utf-8′, errors=’surrogatepass’): bits = bin(int.from_bytes(text.encode(encoding, errors), ‘big’))[2:] return bits.zfill(8 * ((len(bits) + 7) // 8))
def text_from_bits(bits, encoding=’utf-8′, errors=’surrogatepass’): n = int(bits, 2) return n.to_bytes((n.bit_length() + 7) // 8, ‘big’).decode(encoding, errors) or ‘