
Hallo Herr Schnoor,
hier komnmt der Code: if modus == "x": ziffer = input(" insert <index>number > ") point = nachdez(basis,ziffer) point = int(point) zeichen = chr(point) digit = nachsys(2,point) print(" Digit: ",digit) print() print(" sign: ",zeichen) print(" point: ",point ) print(" binär: ",digit) lg = len(digit) print(" bit: ",lg)
den habe ich etwas verbessert: def decodeIndex(index, ziffern): """ index : ein Zahlzeichen (aus beliebig vielen Ziffern) des Positionssystems zur Basis b = len(ziffern) Voreinstellung: b = 4096 ziffern : Ziffernstring (aus UTF8-Zeichen) zur Notation von Zahlzeichen dieses Positionsystems index codiert die dezimale Ordnungsnummer point = ord(ch) eines UTF8-Zeichens ch also index = nachsys(basis, point, ziffern) zulässige Werte für index: index < nachsys(basis, 2**24-1, ziffern) """ MaxUTF8 = 1114111 point = nachdez(basis, index, ziffern) # point = ord(ch) eines UTF8-Zeichens ch digit = nachsys(2, point, ziffern) # point = ord(ch) als Dualzahl print("\nIndex: %s" % index) print(" Dual: ", digit) print(" point: ", point ) # print(" binär: ", digit) # irreführende Bezeichnung: dual != binär # siehe: https://www.danisch.de/blog/2024/07/26/vom-unterschied-zwischen-einem-binaer... lg = len(digit) # Anzahl der Dualziffern (0,1) von digit print(" bit: ", lg) # irreführende Bezeichnung: Dualziffer != bit if point > MaxUTF8: print("Fehler: point > %d" % MaxUTF8) print("ValueError: chr() arg not in range(0x110000)") return zeichen = chr(point) # UTF8-Zeichen, ord(zeichen) = point print(" sign: ", zeichen) und damit etwas herumgespielt: for k in range(4, 18, 2): point = 2**(2*k) - 1 index = nachsys(basis, point, ziffern) decodeIndex(index, ziffern) ergibt: Basis : 4096 Index: Ɖ Dual: 11111111 point: 255 bit: 8 sign: ÿ Index: ꓰ Dual: 111111111111 point: 4095 bit: 12 sign: Index: Fꓰ Dual: 1111111111111111 point: 65535 bit: 16 sign: Index: Ɖꓰ Dual: 11111111111111111111 point: 1048575 bit: 20 sign: Index: ꓰꓰ Dual: 111111111111111111111111 point: 16777215 bit: 24 Fehler: point > 1114111 ValueError: chr() arg not in range(0x110000) Index: Fꓰꓰ Dual: 1111111111111111111111111111 point: 268435455 bit: 28 Fehler: point > 1114111 ValueError: chr() arg not in range(0x110000) Index: Ɖꓰꓰ Dual: 11111111111111111111111111111111 point: 4294967295 bit: 32 Fehler: point > 1114111 ValueError: chr() arg not in range(0x110000) ------------------------------ Da Sie -- vielleicht wegen des Sommerwetters? -- offensichtlich nur CPM-Codeschnipsel-Gedöns und etwas Python sprechen können, muss ich wohl oder übel meine Frage Muß in einem längeren Indexstring aus einziffrigen (Typ A) und mehrziffrigen (Typ B) 4096-er Systemzahlen zwischen diesen unterschiedlichen Zeichentypen ein Trennzeichen (z.B. Leerzeichen) stehen? selbst beantworten, und zwar mit einem JA. Dies vollkommen analog dem Leerzeichen, um zwischen den drei Zahlen 4711 und 47 11 unterscheiden zu können. Was bedeutet das für den Byte-Gehalt B(N) der beiden Nachrichten, (1) der Original-Nachricht (= N1) eines Textes aus -- clever konzipierten -- UTF8-Zeichen und (2) der zu Index-Zahlen des 4096-er Systems übersetzten Nachricht (= N2) -- "angereichert'' mit Leerzeichen zwecks Zahlzeichentrennung? Ich denke, das bedeutet B(N2) > B(N1). Oder irre ich mich da? W. Büchel