• 1
    Eingabe und Ausgabe
    • Aufgaben
  • 2
    Bedingungen
    • Aufgaben
  • 3
    For-Schleife
    • Aufgaben
  • 4
    Zeichenketten
    • Aufgaben
  • 5
    While-Schleife
    • Aufgaben
  • 6
    Listen
    • Aufgaben
  • 7
    2D-Arrays
    • Aufgaben
  • 8
    Wörterbücher
    • Aufgaben
  • 9
    Mengen
    • Aufgaben
  • 10
    Funktionen und Rekursion
    • Aufgaben
  • к

Lektion 4. Lines

Schwierigkeit:

Aufgabe«Sportspiele»

💻 Python

Schreiben Sie ein Programm, das den Zeilenwert mithilfe der ASCII-Kodierung in das Base64-Format konvertiert.

rn

Hinweis: & nbsp; Diese Aufgabe verwendet eine Version von Base64 ohne Auffüllung (das Symbol & nbsp; = wird nicht am Ende hinzugefügt).

rn

Der Base64-Algorithmus konvertiert Binärdaten in ein Textformat, wobei nur 64 druckbare ASCII-Symbole verwendet werden. Die Hauptidee besteht darin, 3 Bytes (24 Bits) der Eingabedaten zu nehmen und sie in Form von 4 Zeichen (4 * 6 Bits = 24 Bits) darzustellen.

rn

Kodierung ( to_base64 ):

rn
    rn
  1. Die Zeile wird in eine Sequenz von ASCII-Codes umgewandelt.
  2. rn
  3. Jeder ASCII-Code wird als 8-Bit-Binärzahl dargestellt.
  4. rn
  5. Alle diese 8-Bit-Sequenzen werden zu einer langen Bit-Zeile zusammengefügt.
  6. rn
  7. Diese lange Zeile wird in Gruppen von 6 Bits aufgeteilt.
  8. rn
  9. Jede 6-Bit-Gruppe wird in eine Dezimalzahl (von 0 bis 63) umgewandelt.
  10. rn
  11. Diese Zahl wird als Index verwendet, um ein Symbol aus dem Base64-Alphabet auszuwählen ( "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" ).
  12. rn

Eingabeformat

Eine Zeile wird an die Eingabe übergeben.

Ausgabeformat

Zeile — Das Ergebnis der Transformation.

Beispiel

Eingabe

Mann

Ausgabe

Twfu

Hinweis

There will be no clue here, decide for yourself!

main.py
Test 1
Test 2
Test 3
Test 4
Test 5
Test 6
Test 7
Test 8
Test 9
Test 10
Entwicklerlösung
# Константа с символами алфавита Base64
BASE64_CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
# Создаем словарь для быстрого обратного поиска (декодирования)
BASE64_MAP = {char: index for index, char in enumerate(BASE64_CHARS)}
s = input()
if not s:
    print("")

# 1. Преобразуем всю строку в одну длинную битовую строку
bit_string = ""
for char in s:
    # Получаем ASCII-код символа и форматируем его в 8-битную двоичную строку
    bit_string += format(ord(char), '08b')

encoded_string = ""
# 2. Делим битовую строку на чанки (куски) по 6 бит
i = 0
while i < len(bit_string):
    chunk = bit_string[i:i+6]
    i += 6
    
    # Если последний чанк короче 6 бит, дополняем его нулями справа
    if len(chunk) < 6:
        chunk = chunk.ljust(6, '0')
        
    # 3. Конвертируем 6-битный чанк в число и находим символ в алфавите
    decimal_value = int(chunk, 2)
    encoded_string += BASE64_CHARS[decimal_value]
    
print(encoded_string) 

🎉 Glückwunsch! 🎉

Du hast die Aufgabe hervorragend gelöst! Es war schwierig, aber du hast die Lösung gefunden. Du bist dem Meister einen Schritt näher! Mach weiter so.

AD

Werbung

red-snake blue-snake green-snake

Führe deinen Code aus...

KI-Assistent

Hallo! Ich bin dein Programmier-Assistent. Stelle mir beliebige Fragen zu Python — ich erkläre Funktionen, Methoden und helfe dir bei der aktuellen Aufgabe!