""" Lab001, часть 2. Русский текст, символы, байты и кодировка UTF-8. Цель: 1. Увидеть разницу между количеством символов и количеством байтов. 2. Посмотреть, сколько байтов занимает каждая русская буква. 3. Восстановить исходный текст из байтов. """ # Исходное сообщение message = "ПРИВЕТ SDR" # Преобразование текста в байты UTF-8 encoded_message = message.encode("utf-8") # Обратное преобразование байтов в текст decoded_message = encoded_message.decode("utf-8") print("Исходный текст:") print(message) print("\nКоличество символов:") print(len(message)) print("\nКоличество байтов UTF-8:") print(len(encoded_message)) print("\nОбъект bytes:") print(encoded_message) print("\nВсе байты в десятичном виде:") print(list(encoded_message)) print("\nПодробно по каждому символу:") for character in message: character_bytes = character.encode("utf-8") decimal_bytes = list(character_bytes) binary_bytes = " ".join( f"{byte:08b}" for byte in character_bytes ) print( f"{character!r:>4} " f"→ байтов: {len(character_bytes)} " f"→ числа: {decimal_bytes} " f"→ биты: {binary_bytes}" ) print("\nВосстановленный текст:") print(decoded_message) # Автоматические проверки assert decoded_message == message assert len(encoded_message) >= len(message) print("\nПроверка пройдена: русский текст восстановлен без ошибок.")