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-und-einem-dualsystem/
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
_______________________________________________
python-de Mailingliste -- [email protected]
Zur Abmeldung von dieser Mailingliste senden Sie eine Nachricht an
[email protected]
https://mail.python.org/mailman3/lists/python-de.python.org/
Mitgliedsadresse: [email protected]