bin, hex, dez, oct <-> ascii

This commit is contained in:
2025-07-22 21:08:33 +02:00
parent f7123ed094
commit 76caa8a218
2 changed files with 113 additions and 138 deletions

View File

@@ -66,17 +66,32 @@ def auswahl_verarbeiten():
elif auswahl == "ROT47": elif auswahl == "ROT47":
st.session_state.output_text = tools.rot47(text) st.session_state.output_text = tools.rot47(text)
st.session_state.map_data = None st.session_state.map_data = None
elif auswahl == "REPLACE": elif auswahl == "ASCII-Text->HEX":
st.session_state.output_text = tools.REPLACE(text) st.session_state.output_text = tools.ascii_to_hex(text)
st.session_state.map_data = None st.session_state.map_data = None
elif auswahl == "REPLACE": elif auswahl == "ASCII-Text->DEZ":
st.session_state.output_text = tools.REPLACE(text) st.session_state.output_text = tools.ascii_to_dez(text)
st.session_state.map_data = None st.session_state.map_data = None
elif auswahl == "REPLACE": elif auswahl == "ASCII-Text->Octal":
st.session_state.output_text = tools.REPLACE(text) st.session_state.output_text = tools.ascii_to_octal(text)
st.session_state.map_data = None st.session_state.map_data = None
elif auswahl == "REPLACE": elif auswahl == "ASCII-Text->BIN (16bit)":
st.session_state.output_text = tools.REPLACE(text) 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 st.session_state.map_data = None
elif auswahl == "REPLACE": elif auswahl == "REPLACE":
st.session_state.output_text = tools.REPLACE(text) st.session_state.output_text = tools.REPLACE(text)
@@ -133,7 +148,14 @@ option = st.sidebar.radio("hidden_label",
"ROT13", "ROT13",
"ROT18", "ROT18",
"ROT47", "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",
"", "",
"", "",
"", "",

View File

@@ -445,37 +445,26 @@ def rot47(eingabetext):
x.append(i) x.append(i)
return ''.join(x) return ''.join(x)
''' def ascii_to_dez(eingabetext):
def asciitodez():
eingabetext = Eingabe.get(1.0, END)
eingabetext = eingabetext.rstrip() eingabetext = eingabetext.rstrip()
if eingabetext == "": if eingabetext == "":
Ausgabe.insert(1.0, """HILFE: [Text zu Dezimalzahlen] return ("### Text zu Dezimalzahlen\n"
Der eingegebene Text wird in Dezimalzahlen umgewandelt. """ + "\n\n") "Der eingegebene Text wird in Dezimalzahlen umgewandelt.")
else: else:
z = [] z = []
for i in eingabetext: for i in eingabetext:
z.append(str(ord(i))) z.append(str(ord(i)))
Ausgabe.insert(1.0, ' '.join(z) + "\n") return ' '.join(z)
def dez_to_ascii(eingabetext):
def deztoascii():
seperator = ("|,", "_", ".", "-", "/", ";", ",") seperator = ("|,", "_", ".", "-", "/", ";", ",")
eingabetext = Eingabe.get(1.0, END)
eingabetext = eingabetext.rstrip() eingabetext = eingabetext.rstrip()
if eingabetext == "": if eingabetext == "":
Ausgabe.insert(1.0, """HILFE: [Dezimalzahlen zu Text] return ("### Dezimalzahlen zu Text\n"
Die eingegebenen Dezimalzahlen werden in die "Die eingegebenen Dezimalzahlen werden in die entsprechenden UNICODE-Zeichen umgewandelt. Als "
entsprechenden UNICODE-Zeichen umgewandelt. "Trennungszeichen zwischen den Zahlen sind folgende Zeichen erlaubt: | , _ . - / ; , und Leerzeichen. "
Als Trennungszeichen zwischen den Zahlen sind "Bei Verwendung von Leerzeichen sollten möglichst nur 1 Leerzeichen zwischen den Zahlen verwendet "
folgende Zeichen erlaubt: | , _ . - / ; , und "werden (überzählige Leerzeichen werden sonst als nicht erkannte Zeichen behandelt).")
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")
else: else:
se = "" se = ""
for s in seperator: for s in seperator:
@@ -487,11 +476,11 @@ Zeichen behandelt).""" + "\n\n")
try: try:
ausz = int(eingabetext) ausz = int(eingabetext)
except ValueError: except ValueError:
Ausgabe.insert(1.0, "Keine Zahl oder gültiges Trennzeichen (, ; . / - _ | oder Leerzeichen) erkannt!\n", return "Keine Zahl oder gültiges Trennzeichen (, ; . / - _ | oder Leerzeichen) erkannt!"
"re")
else: else:
Ausgabe.insert(1.0, chr(ausz) + "\n") return chr(ausz)
else: else:
ausgabetext = ""
txt = eingabetext.split(se) txt = eingabetext.split(se)
atxt = "" atxt = ""
ignor = "" ignor = ""
@@ -502,44 +491,34 @@ Zeichen behandelt).""" + "\n\n")
ignor = ignor + str(z) + " " ignor = ignor + str(z) + " "
else: else:
atxt = atxt + chr(az) atxt = atxt + chr(az)
Ausgabe.insert(1.0, atxt + "\n")
Ausgabe.insert(1.0, "umgewandelte Zeichen:\n", "bu")
if ignor != "": if ignor != "":
Ausgabe.insert(1.0, ignor + "\n") ausgabetext += "_Achtung nicht erkannte Zeichen:_ \n"
Ausgabe.insert(1.0, "Achtung nicht erkannte Zeichen:\n", "re") ausgabetext += ignor + " \n"
ausgabetext += "_umgewandelte Zeichen:_ \n"
ausgabetext += atxt
return ausgabetext
def ascii_to_hex(eingabetext):
def asciitohex():
eingabetext = Eingabe.get(1.0, END)
eingabetext = eingabetext.rstrip() eingabetext = eingabetext.rstrip()
if eingabetext == "": if eingabetext == "":
Ausgabe.insert(1.0, """HILFE: [Text zu Hexadezimalzahlen] return ("### Text zu Hexadezimalzahlen\n"
Der eingegebene Text wird in Hexadezimalzahlen umgewandelt. """ + "\n\n") "Der eingegebene Text wird in Hexadezimalzahlen umgewandelt.")
else: else:
z = [] z = []
for i in eingabetext: for i in eingabetext:
hexstr = ("{:X}".format(ord(i))) # großes X für Hex in Großbuchstaben hexstr = ("{:X}".format(ord(i))) # großes X für Hex in Großbuchstaben
z.append(hexstr) z.append(hexstr)
Ausgabe.insert(1.0, ' '.join(z) + "\n") return ' '.join(z)
def hex_to_ascii(eingabetext):
def hextoascii():
seperator = ("|,", "_", ".", "-", "/", ";", ",") seperator = ("|,", "_", ".", "-", "/", ";", ",")
eingabetext = Eingabe.get(1.0, END)
eingabetext = eingabetext.rstrip() eingabetext = eingabetext.rstrip()
if eingabetext == "": if eingabetext == "":
Ausgabe.insert(1.0, """HILFE: [Hexadezimalzahlen zu Text] return ("### Hexadezimalzahlen zu Text\n"
Die eingegebenen Hexadezimalzahlen werden in die "Die eingegebenen Hexadezimalzahlen werden in die entsprechenden UNICODE-Zeichen umgewandelt. "
entsprechenden UNICODE-Zeichen umgewandelt. "Als Trennungszeichen zwischen den Zahlen sind folgende Zeichen erlaubt: | , _ . - / ; , und "
Als Trennungszeichen zwischen den Zahlen sind "Leerzeichen. Bei Verwendung von Leerzeichen sollten möglichst nur 1 Leerzeichen zwischen den "
folgende Zeichen erlaubt: | , _ . - / ; , und "Zahlen verwendet werden (überzählige Leerzeichen werden sonst als nicht erkannte Zeichen behandelt).")
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")
else: else:
se = "" se = ""
for s in seperator: for s in seperator:
@@ -551,11 +530,11 @@ Zeichen behandelt).""" + "\n\n")
try: try:
ausz = int(eingabetext, 16) ausz = int(eingabetext, 16)
except ValueError: except ValueError:
Ausgabe.insert(1.0, "Keine Zahl oder gültiges Trennzeichen (, ; . / - _ | oder Leerzeichen) erkannt!\n", return "Keine Zahl oder gültiges Trennzeichen (, ; . / - _ | oder Leerzeichen) erkannt!"
"re")
else: else:
Ausgabe.insert(1.0, chr(ausz) + "\n") return chr(ausz)
else: else:
ausgabetext = ""
txt = eingabetext.split(se) txt = eingabetext.split(se)
atxt = "" atxt = ""
ignor = "" ignor = ""
@@ -566,43 +545,33 @@ Zeichen behandelt).""" + "\n\n")
ignor = ignor + str(z) + " " ignor = ignor + str(z) + " "
else: else:
atxt = atxt + chr(az) atxt = atxt + chr(az)
Ausgabe.insert(1.0, atxt + "\n")
Ausgabe.insert(1.0, "umgewandelte Zeichen:\n", "bu")
if ignor != "": if ignor != "":
Ausgabe.insert(1.0, ignor + "\n") ausgabetext += "_Achtung nicht erkannte Zeichen:_ \n"
Ausgabe.insert(1.0, "Achtung nicht erkannte Zeichen:\n", "re") ausgabetext += ignor + " \n"
ausgabetext += "_umgewandelte Zeichen:_ \n"
ausgabetext += atxt
return ausgabetext
def ascii_to_octal(eingabetext):
def asciitooctal():
eingabetext = Eingabe.get(1.0, END)
eingabetext = eingabetext.rstrip() eingabetext = eingabetext.rstrip()
if eingabetext == "": if eingabetext == "":
Ausgabe.insert(1.0, """HILFE: [Text zu Octalzahlen] return ("### Text zu Octalzahlen\n"
Der eingegebene Text wird in Octalzahlen umgewandelt. """ + "\n\n") "Der eingegebene Text wird in Octalzahlen umgewandelt.")
else: else:
z = [] z = []
for i in eingabetext: for i in eingabetext:
z.append("{:o}".format(ord(i))) z.append("{:o}".format(ord(i)))
Ausgabe.insert(1.0, ' '.join(z) + "\n") return ' '.join(z)
def octal_to_ascii(eingabetext):
def octaltoascii():
seperator = ("|,", "_", ".", "-", "/", ";", ",") seperator = ("|,", "_", ".", "-", "/", ";", ",")
eingabetext = Eingabe.get(1.0, END)
eingabetext = eingabetext.rstrip() eingabetext = eingabetext.rstrip()
if eingabetext == "": if eingabetext == "":
Ausgabe.insert(1.0, """HILFE: [Octalzahlen zu Text] return ("### Octalzahlen zu Text\n"
Die eingegebenen Octalzahlen werden in die "Die eingegebenen Octalzahlen werden in die entsprechenden UNICODE-Zeichen umgewandelt. Als "
entsprechenden UNICODE-Zeichen umgewandelt. "Trennungszeichen zwischen den Zahlen sind folgende Zeichen erlaubt: | , _ . - / ; , und Leerzeichen. "
Als Trennungszeichen zwischen den Zahlen sind "Bei Verwendung von Leerzeichen sollten möglichst nur 1 Leerzeichen zwischen den Zahlen verwendet "
folgende Zeichen erlaubt: | , _ . - / ; , und "werden (überzählige Leerzeichen werden sonst als nicht erkannte Zeichen behandelt).")
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")
else: else:
se = "" se = ""
for s in seperator: for s in seperator:
@@ -614,11 +583,11 @@ Zeichen behandelt).""" + "\n\n")
try: try:
ausz = int(eingabetext, 8) ausz = int(eingabetext, 8)
except ValueError: except ValueError:
Ausgabe.insert(1.0, "Keine Zahl oder gültiges Trennzeichen (, ; . / - _ | oder Leerzeichen) erkannt!\n", return "Keine Zahl oder gültiges Trennzeichen (, ; . / - _ | oder Leerzeichen) erkannt!"
"re")
else: else:
Ausgabe.insert(1.0, chr(ausz) + "\n") return chr(ausz)
else: else:
ausgabetext = ""
txt = eingabetext.split(se) txt = eingabetext.split(se)
atxt = "" atxt = ""
ignor = "" ignor = ""
@@ -629,66 +598,49 @@ Zeichen behandelt).""" + "\n\n")
ignor = ignor + str(z) + " " ignor = ignor + str(z) + " "
else: else:
atxt = atxt + chr(az) atxt = atxt + chr(az)
Ausgabe.insert(1.0, atxt + "\n")
Ausgabe.insert(1.0, "umgewandelte Zeichen:\n", "bu")
if ignor != "": if ignor != "":
Ausgabe.insert(1.0, ignor + "\n") ausgabetext += "_Achtung nicht erkannte Zeichen:_ \n"
Ausgabe.insert(1.0, "Achtung nicht erkannte Zeichen:\n", "re") ausgabetext += ignor + " \n"
ausgabetext += "_umgewandelte Zeichen:_ \n"
ausgabetext += atxt
return ausgabetext
def ascii_to_bin16(eingabetext):
def asciitobin16():
eingabetext = Eingabe.get(1.0, END)
eingabetext = eingabetext.rstrip() eingabetext = eingabetext.rstrip()
if eingabetext == "": if eingabetext == "":
Ausgabe.insert(1.0, """HILFE: [Text zu Binärzahlen] return ("### Text zu Binärzahlen\n"
Der eingegebene Text wird in Binärzahlen mit "Der eingegebene Text wird in Binärzahlen mit einer festgelegten Breite von 16bit (16 Zeichen) "
einer festgelegten Breite von 16bit (16 Zeichen) "umgewandelt.")
umgewandelt. """ + "\n\n")
else: else:
z = [] z = []
for i in eingabetext: for i in eingabetext:
z.append("{:0>16b}".format(ord(i))) z.append("{:0>16b}".format(ord(i)))
Ausgabe.insert(1.0, ' '.join(z) + "\n") return ' '.join(z)
def ascii_to_bin8(eingabetext):
def asciitobin8():
eingabetext = Eingabe.get(1.0, END)
eingabetext = eingabetext.rstrip() eingabetext = eingabetext.rstrip()
if eingabetext == "": if eingabetext == "":
Ausgabe.insert(1.0, """HILFE: [Text zu Binärzahlen] return ("### Text zu Binärzahlen\n"
Der eingegebene Text wird in Binärzahlen mit "Der eingegebene Text wird in Binärzahlen mit einer festgelegten Breite von 8bit (8 Zeichen) "
einer festgelegten Breite von 8bit (8 Zeichen) "umgewandelt.")
umgewandelt. """ + "\n\n")
else: else:
z = [] z = []
for i in eingabetext: for i in eingabetext:
if ord(i) > 255: if ord(i) > 255:
Ausgabe.insert(1.0, return ("Sorry der Eingabetext enthält Zeichen,welche sich nicht mit 8 bit in binär darstellen "
"Sorry der Eingabetext enthält Zeichen,\nwelche sich nicht" "lassen!")
" mit 8 bit in binär darstellen lassen!\n")
return
z.append("{:0>8b}".format(ord(i))) z.append("{:0>8b}".format(ord(i)))
Ausgabe.insert(1.0, ' '.join(z) + "\n") return ' '.join(z)
def bin_to_ascii(eingabetext):
def bintoascii():
seperator = ("|,", "_", ".", "-", "/", ";", ",") seperator = ("|,", "_", ".", "-", "/", ";", ",")
eingabetext = Eingabe.get(1.0, END)
eingabetext = eingabetext.rstrip() eingabetext = eingabetext.rstrip()
if eingabetext == "": if eingabetext == "":
Ausgabe.insert(1.0, """HILFE: [Binärzahlen zu Text] return ("### Binärzahlen zu Text\n"
Die eingegebenen Binärzahlen werden in die "Die eingegebenen Binärzahlen werden in die entsprechenden UNICODE-Zeichen umgewandelt. Als "
entsprechenden UNICODE-Zeichen umgewandelt. "Trennungszeichen zwischen den Zahlen sind folgende Zeichen erlaubt: | , _ . - / ; , und "
Als Trennungszeichen zwischen den Zahlen sind "Leerzeichen. Bei Verwendung von Leerzeichen sollten möglichst nur 1 Leerzeichen zwischen den Zahlen "
folgende Zeichen erlaubt: | , _ . - / ; , und "verwendet werden (überzählige Leerzeichen werden sonst als nicht erkannte Zeichen behandelt).")
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")
else: else:
se = "" se = ""
for s in seperator: for s in seperator:
@@ -700,11 +652,11 @@ Zeichen behandelt).""" + "\n\n")
try: try:
ausz = int(eingabetext, 2) ausz = int(eingabetext, 2)
except ValueError: except ValueError:
Ausgabe.insert(1.0, "Keine Zahl oder gültiges Trennzeichen (, ; . / - _ | oder Leerzeichen) erkannt!\n", return "Keine Zahl oder gültiges Trennzeichen (, ; . / - _ | oder Leerzeichen) erkannt!"
"re")
else: else:
Ausgabe.insert(1.0, chr(ausz) + "\n") return chr(ausz)
else: else:
ausgabetext = ""
txt = eingabetext.split(se) txt = eingabetext.split(se)
atxt = "" atxt = ""
ignor = "" ignor = ""
@@ -715,15 +667,16 @@ Zeichen behandelt).""" + "\n\n")
ignor = ignor + str(z) + " " ignor = ignor + str(z) + " "
else: else:
atxt = atxt + chr(az) atxt = atxt + chr(az)
Ausgabe.insert(1.0, atxt + "\n")
Ausgabe.insert(1.0, "umgewandelte Zeichen:\n", "bu")
if ignor != "": if ignor != "":
Ausgabe.insert(1.0, ignor + "\n") ausgabetext += "_Achtung nicht erkannte Zeichen:_ \n"
Ausgabe.insert(1.0, "Achtung nicht erkannte Zeichen:\n", "re") ausgabetext += ignor + " \n"
ausgabetext += "_umgewandelte Zeichen:_ \n"
ausgabetext += atxt
return ausgabetext
'''
def zahlwortsuche_de(): def zahlwortsuche_de():
eingabetext = Eingabe.get(1.0, END) eingabetext = Eingabe.get(1.0, END)
eingabetext = eingabetext.rstrip() eingabetext = eingabetext.rstrip()
if eingabetext == "": if eingabetext == "":