From 76caa8a2185399ed0791bee2c72d6b3d50c61f34 Mon Sep 17 00:00:00 2001 From: tebarius Date: Tue, 22 Jul 2025 21:08:33 +0200 Subject: [PATCH] bin, hex, dez, oct <-> ascii --- app/app.py | 40 +++++++--- app/tools.py | 211 ++++++++++++++++++++------------------------------- 2 files changed, 113 insertions(+), 138 deletions(-) diff --git a/app/app.py b/app/app.py index b02c688..5c25f82 100644 --- a/app/app.py +++ b/app/app.py @@ -66,17 +66,32 @@ def auswahl_verarbeiten(): elif auswahl == "ROT47": st.session_state.output_text = tools.rot47(text) st.session_state.map_data = None - elif auswahl == "REPLACE": - st.session_state.output_text = tools.REPLACE(text) + elif auswahl == "ASCII-Text->HEX": + st.session_state.output_text = tools.ascii_to_hex(text) st.session_state.map_data = None - elif auswahl == "REPLACE": - st.session_state.output_text = tools.REPLACE(text) + elif auswahl == "ASCII-Text->DEZ": + st.session_state.output_text = tools.ascii_to_dez(text) st.session_state.map_data = None - elif auswahl == "REPLACE": - st.session_state.output_text = tools.REPLACE(text) + elif auswahl == "ASCII-Text->Octal": + st.session_state.output_text = tools.ascii_to_octal(text) st.session_state.map_data = None - elif auswahl == "REPLACE": - st.session_state.output_text = tools.REPLACE(text) + elif auswahl == "ASCII-Text->BIN (16bit)": + st.session_state.output_text = tools.ascii_to_bin16(text) + st.session_state.map_data = None + elif auswahl == "ASCII-Text->BIN (8bit)": + st.session_state.output_text = tools.ascii_to_bin8(text) + st.session_state.map_data = None + elif auswahl == "HEX->ASCII-Text": + st.session_state.output_text = tools.hex_to_ascii(text) + st.session_state.map_data = None + elif auswahl == "DEZ->ASCII-Text": + st.session_state.output_text = tools.dez_to_ascii(text) + st.session_state.map_data = None + elif auswahl == "Octal->ASCII-Text": + st.session_state.output_text = tools.octal_to_ascii(text) + st.session_state.map_data = None + elif auswahl == "BIN->ASCII-Text": + st.session_state.output_text = tools.bin_to_ascii(text) st.session_state.map_data = None elif auswahl == "REPLACE": st.session_state.output_text = tools.REPLACE(text) @@ -133,7 +148,14 @@ option = st.sidebar.radio("hidden_label", "ROT13", "ROT18", "ROT47", - "", + "ASCII-Text->HEX", + "ASCII-Text->DEZ", + "ASCII-Text->Octal", + "ASCII-Text->BIN (16bit)", + "ASCII-Text->BIN (8bit)", + "HEX->ASCII-Text", + "DEZ->ASCII-Text", + "Octal->ASCII-Text", "", "", "", diff --git a/app/tools.py b/app/tools.py index 6e155c1..068ad24 100644 --- a/app/tools.py +++ b/app/tools.py @@ -445,37 +445,26 @@ def rot47(eingabetext): x.append(i) return ''.join(x) -''' -def asciitodez(): - - eingabetext = Eingabe.get(1.0, END) +def ascii_to_dez(eingabetext): eingabetext = eingabetext.rstrip() if eingabetext == "": - Ausgabe.insert(1.0, """HILFE: [Text zu Dezimalzahlen] -Der eingegebene Text wird in Dezimalzahlen umgewandelt. """ + "\n\n") + return ("### Text zu Dezimalzahlen\n" + "Der eingegebene Text wird in Dezimalzahlen umgewandelt.") else: z = [] for i in eingabetext: z.append(str(ord(i))) - Ausgabe.insert(1.0, ' '.join(z) + "\n") + return ' '.join(z) - -def deztoascii(): +def dez_to_ascii(eingabetext): seperator = ("|,", "_", ".", "-", "/", ";", ",") - - eingabetext = Eingabe.get(1.0, END) eingabetext = eingabetext.rstrip() if eingabetext == "": - Ausgabe.insert(1.0, """HILFE: [Dezimalzahlen zu Text] -Die eingegebenen Dezimalzahlen werden in die -entsprechenden UNICODE-Zeichen umgewandelt. -Als Trennungszeichen zwischen den Zahlen sind -folgende Zeichen erlaubt: | , _ . - / ; , und -Leerzeichen. Bei Verwendung von Leerzeichen -sollten möglichst nur 1 Leerzeichen zwischen -den Zahlen verwendet werden (überzählige -Leerzeichen werden sonst als nicht erkannte -Zeichen behandelt).""" + "\n\n") + return ("### Dezimalzahlen zu Text\n" + "Die eingegebenen Dezimalzahlen werden in die entsprechenden UNICODE-Zeichen umgewandelt. Als " + "Trennungszeichen zwischen den Zahlen sind folgende Zeichen erlaubt: | , _ . - / ; , und Leerzeichen. " + "Bei Verwendung von Leerzeichen sollten möglichst nur 1 Leerzeichen zwischen den Zahlen verwendet " + "werden (überzählige Leerzeichen werden sonst als nicht erkannte Zeichen behandelt).") else: se = "" for s in seperator: @@ -487,11 +476,11 @@ Zeichen behandelt).""" + "\n\n") try: ausz = int(eingabetext) except ValueError: - Ausgabe.insert(1.0, "Keine Zahl oder gültiges Trennzeichen (, ; . / - _ | oder Leerzeichen) erkannt!\n", - "re") + return "Keine Zahl oder gültiges Trennzeichen (, ; . / - _ | oder Leerzeichen) erkannt!" else: - Ausgabe.insert(1.0, chr(ausz) + "\n") + return chr(ausz) else: + ausgabetext = "" txt = eingabetext.split(se) atxt = "" ignor = "" @@ -502,44 +491,34 @@ Zeichen behandelt).""" + "\n\n") ignor = ignor + str(z) + " " else: atxt = atxt + chr(az) - Ausgabe.insert(1.0, atxt + "\n") - Ausgabe.insert(1.0, "umgewandelte Zeichen:\n", "bu") if ignor != "": - Ausgabe.insert(1.0, ignor + "\n") - Ausgabe.insert(1.0, "Achtung nicht erkannte Zeichen:\n", "re") + ausgabetext += "_Achtung nicht erkannte Zeichen:_ \n" + ausgabetext += ignor + " \n" + ausgabetext += "_umgewandelte Zeichen:_ \n" + ausgabetext += atxt + return ausgabetext - -def asciitohex(): - - eingabetext = Eingabe.get(1.0, END) +def ascii_to_hex(eingabetext): eingabetext = eingabetext.rstrip() if eingabetext == "": - Ausgabe.insert(1.0, """HILFE: [Text zu Hexadezimalzahlen] -Der eingegebene Text wird in Hexadezimalzahlen umgewandelt. """ + "\n\n") + return ("### Text zu Hexadezimalzahlen\n" + "Der eingegebene Text wird in Hexadezimalzahlen umgewandelt.") else: z = [] for i in eingabetext: hexstr = ("{:X}".format(ord(i))) # großes X für Hex in Großbuchstaben z.append(hexstr) - Ausgabe.insert(1.0, ' '.join(z) + "\n") + return ' '.join(z) - -def hextoascii(): +def hex_to_ascii(eingabetext): seperator = ("|,", "_", ".", "-", "/", ";", ",") - - eingabetext = Eingabe.get(1.0, END) eingabetext = eingabetext.rstrip() if eingabetext == "": - Ausgabe.insert(1.0, """HILFE: [Hexadezimalzahlen zu Text] -Die eingegebenen Hexadezimalzahlen werden in die -entsprechenden UNICODE-Zeichen umgewandelt. -Als Trennungszeichen zwischen den Zahlen sind -folgende Zeichen erlaubt: | , _ . - / ; , und -Leerzeichen. Bei Verwendung von Leerzeichen -sollten möglichst nur 1 Leerzeichen zwischen -den Zahlen verwendet werden (überzählige -Leerzeichen werden sonst als nicht erkannte -Zeichen behandelt).""" + "\n\n") + return ("### Hexadezimalzahlen zu Text\n" + "Die eingegebenen Hexadezimalzahlen werden in die entsprechenden UNICODE-Zeichen umgewandelt. " + "Als Trennungszeichen zwischen den Zahlen sind folgende Zeichen erlaubt: | , _ . - / ; , und " + "Leerzeichen. Bei Verwendung von Leerzeichen sollten möglichst nur 1 Leerzeichen zwischen den " + "Zahlen verwendet werden (überzählige Leerzeichen werden sonst als nicht erkannte Zeichen behandelt).") else: se = "" for s in seperator: @@ -551,11 +530,11 @@ Zeichen behandelt).""" + "\n\n") try: ausz = int(eingabetext, 16) except ValueError: - Ausgabe.insert(1.0, "Keine Zahl oder gültiges Trennzeichen (, ; . / - _ | oder Leerzeichen) erkannt!\n", - "re") + return "Keine Zahl oder gültiges Trennzeichen (, ; . / - _ | oder Leerzeichen) erkannt!" else: - Ausgabe.insert(1.0, chr(ausz) + "\n") + return chr(ausz) else: + ausgabetext = "" txt = eingabetext.split(se) atxt = "" ignor = "" @@ -566,43 +545,33 @@ Zeichen behandelt).""" + "\n\n") ignor = ignor + str(z) + " " else: atxt = atxt + chr(az) - Ausgabe.insert(1.0, atxt + "\n") - Ausgabe.insert(1.0, "umgewandelte Zeichen:\n", "bu") if ignor != "": - Ausgabe.insert(1.0, ignor + "\n") - Ausgabe.insert(1.0, "Achtung nicht erkannte Zeichen:\n", "re") + ausgabetext += "_Achtung nicht erkannte Zeichen:_ \n" + ausgabetext += ignor + " \n" + ausgabetext += "_umgewandelte Zeichen:_ \n" + ausgabetext += atxt + return ausgabetext - -def asciitooctal(): - - eingabetext = Eingabe.get(1.0, END) +def ascii_to_octal(eingabetext): eingabetext = eingabetext.rstrip() if eingabetext == "": - Ausgabe.insert(1.0, """HILFE: [Text zu Octalzahlen] -Der eingegebene Text wird in Octalzahlen umgewandelt. """ + "\n\n") + return ("### Text zu Octalzahlen\n" + "Der eingegebene Text wird in Octalzahlen umgewandelt.") else: z = [] for i in eingabetext: z.append("{:o}".format(ord(i))) - Ausgabe.insert(1.0, ' '.join(z) + "\n") + return ' '.join(z) - -def octaltoascii(): +def octal_to_ascii(eingabetext): seperator = ("|,", "_", ".", "-", "/", ";", ",") - - eingabetext = Eingabe.get(1.0, END) eingabetext = eingabetext.rstrip() if eingabetext == "": - Ausgabe.insert(1.0, """HILFE: [Octalzahlen zu Text] -Die eingegebenen Octalzahlen werden in die -entsprechenden UNICODE-Zeichen umgewandelt. -Als Trennungszeichen zwischen den Zahlen sind -folgende Zeichen erlaubt: | , _ . - / ; , und -Leerzeichen. Bei Verwendung von Leerzeichen -sollten möglichst nur 1 Leerzeichen zwischen -den Zahlen verwendet werden (überzählige -Leerzeichen werden sonst als nicht erkannte -Zeichen behandelt).""" + "\n\n") + return ("### Octalzahlen zu Text\n" + "Die eingegebenen Octalzahlen werden in die entsprechenden UNICODE-Zeichen umgewandelt. Als " + "Trennungszeichen zwischen den Zahlen sind folgende Zeichen erlaubt: | , _ . - / ; , und Leerzeichen. " + "Bei Verwendung von Leerzeichen sollten möglichst nur 1 Leerzeichen zwischen den Zahlen verwendet " + "werden (überzählige Leerzeichen werden sonst als nicht erkannte Zeichen behandelt).") else: se = "" for s in seperator: @@ -614,11 +583,11 @@ Zeichen behandelt).""" + "\n\n") try: ausz = int(eingabetext, 8) except ValueError: - Ausgabe.insert(1.0, "Keine Zahl oder gültiges Trennzeichen (, ; . / - _ | oder Leerzeichen) erkannt!\n", - "re") + return "Keine Zahl oder gültiges Trennzeichen (, ; . / - _ | oder Leerzeichen) erkannt!" else: - Ausgabe.insert(1.0, chr(ausz) + "\n") + return chr(ausz) else: + ausgabetext = "" txt = eingabetext.split(se) atxt = "" ignor = "" @@ -629,66 +598,49 @@ Zeichen behandelt).""" + "\n\n") ignor = ignor + str(z) + " " else: atxt = atxt + chr(az) - Ausgabe.insert(1.0, atxt + "\n") - Ausgabe.insert(1.0, "umgewandelte Zeichen:\n", "bu") if ignor != "": - Ausgabe.insert(1.0, ignor + "\n") - Ausgabe.insert(1.0, "Achtung nicht erkannte Zeichen:\n", "re") + ausgabetext += "_Achtung nicht erkannte Zeichen:_ \n" + ausgabetext += ignor + " \n" + ausgabetext += "_umgewandelte Zeichen:_ \n" + ausgabetext += atxt + return ausgabetext - -def asciitobin16(): - - eingabetext = Eingabe.get(1.0, END) +def ascii_to_bin16(eingabetext): eingabetext = eingabetext.rstrip() if eingabetext == "": - Ausgabe.insert(1.0, """HILFE: [Text zu Binärzahlen] -Der eingegebene Text wird in Binärzahlen mit -einer festgelegten Breite von 16bit (16 Zeichen) -umgewandelt. """ + "\n\n") + return ("### Text zu Binärzahlen\n" + "Der eingegebene Text wird in Binärzahlen mit einer festgelegten Breite von 16bit (16 Zeichen) " + "umgewandelt.") else: z = [] for i in eingabetext: z.append("{:0>16b}".format(ord(i))) - Ausgabe.insert(1.0, ' '.join(z) + "\n") + return ' '.join(z) - -def asciitobin8(): - - eingabetext = Eingabe.get(1.0, END) +def ascii_to_bin8(eingabetext): eingabetext = eingabetext.rstrip() if eingabetext == "": - Ausgabe.insert(1.0, """HILFE: [Text zu Binärzahlen] -Der eingegebene Text wird in Binärzahlen mit -einer festgelegten Breite von 8bit (8 Zeichen) -umgewandelt. """ + "\n\n") + return ("### Text zu Binärzahlen\n" + "Der eingegebene Text wird in Binärzahlen mit einer festgelegten Breite von 8bit (8 Zeichen) " + "umgewandelt.") else: z = [] for i in eingabetext: if ord(i) > 255: - Ausgabe.insert(1.0, - "Sorry der Eingabetext enthält Zeichen,\nwelche sich nicht" - " mit 8 bit in binär darstellen lassen!\n") - return + return ("Sorry der Eingabetext enthält Zeichen,welche sich nicht mit 8 bit in binär darstellen " + "lassen!") z.append("{:0>8b}".format(ord(i))) - Ausgabe.insert(1.0, ' '.join(z) + "\n") + return ' '.join(z) - -def bintoascii(): +def bin_to_ascii(eingabetext): seperator = ("|,", "_", ".", "-", "/", ";", ",") - - eingabetext = Eingabe.get(1.0, END) eingabetext = eingabetext.rstrip() if eingabetext == "": - Ausgabe.insert(1.0, """HILFE: [Binärzahlen zu Text] -Die eingegebenen Binärzahlen werden in die -entsprechenden UNICODE-Zeichen umgewandelt. -Als Trennungszeichen zwischen den Zahlen sind -folgende Zeichen erlaubt: | , _ . - / ; , und -Leerzeichen. Bei Verwendung von Leerzeichen -sollten möglichst nur 1 Leerzeichen zwischen -den Zahlen verwendet werden (überzählige -Leerzeichen werden sonst als nicht erkannte -Zeichen behandelt).""" + "\n\n") + return ("### Binärzahlen zu Text\n" + "Die eingegebenen Binärzahlen werden in die entsprechenden UNICODE-Zeichen umgewandelt. Als " + "Trennungszeichen zwischen den Zahlen sind folgende Zeichen erlaubt: | , _ . - / ; , und " + "Leerzeichen. Bei Verwendung von Leerzeichen sollten möglichst nur 1 Leerzeichen zwischen den Zahlen " + "verwendet werden (überzählige Leerzeichen werden sonst als nicht erkannte Zeichen behandelt).") else: se = "" for s in seperator: @@ -700,11 +652,11 @@ Zeichen behandelt).""" + "\n\n") try: ausz = int(eingabetext, 2) except ValueError: - Ausgabe.insert(1.0, "Keine Zahl oder gültiges Trennzeichen (, ; . / - _ | oder Leerzeichen) erkannt!\n", - "re") + return "Keine Zahl oder gültiges Trennzeichen (, ; . / - _ | oder Leerzeichen) erkannt!" else: - Ausgabe.insert(1.0, chr(ausz) + "\n") + return chr(ausz) else: + ausgabetext = "" txt = eingabetext.split(se) atxt = "" ignor = "" @@ -715,15 +667,16 @@ Zeichen behandelt).""" + "\n\n") ignor = ignor + str(z) + " " else: atxt = atxt + chr(az) - Ausgabe.insert(1.0, atxt + "\n") - Ausgabe.insert(1.0, "umgewandelte Zeichen:\n", "bu") if ignor != "": - Ausgabe.insert(1.0, ignor + "\n") - Ausgabe.insert(1.0, "Achtung nicht erkannte Zeichen:\n", "re") - + ausgabetext += "_Achtung nicht erkannte Zeichen:_ \n" + ausgabetext += ignor + " \n" + ausgabetext += "_umgewandelte Zeichen:_ \n" + ausgabetext += atxt + return ausgabetext +''' def zahlwortsuche_de(): - + eingabetext = Eingabe.get(1.0, END) eingabetext = eingabetext.rstrip() if eingabetext == "":