Ohne jetzt überhaupt das groß getestet zu haben, nein. Wird nicht gehen.
Kurze Erklärung für die anderen.
Er hat eine Funktion erstellt, die zuerst result auf 0 setzt.
Danach fängt er an in einer Schleife Zeichen für Zeichen zu iterieren.
Bei jeder Iteration wird die Position und Dezimalstelle des Zeichens an i und char übergeben.
In die Varibale result wird der Dezimalwert des Zeichens mit der Bitoperation um X Bit nach links verschoben und zu result addiert. X ist in dem Fall die aktuelle Position des Zeichens (fängt bei 0 an).
Danach wird result durch return zurückgegeben.
Letztendlich ist es eine Art Hash-Wert mit dem man keine Rückschlüsse ziehen kann.
Ich selbst musste erstmal nachschlagen, was der Operator << bzw. >> macht.
Die Funktion ord() gibt den Dezimalwert eines Zeichens aus.
|
Source code
|
1
2
3
4
|
>>> ord('A')
65
>>> ord('a')
97
|
Die Funktion enumerate gibt bei dem String 'sourceserver.info' z.B. folgendes aus:
|
Source code
|
1
2
|
>>> list(enumerate('sourceserver.info'))
[(0, 's'), (1, 'o'), (2, 'u'), (3, 'r'), (4, 'c'), (5, 'e'), (6, 's'), (7, 'e'), (8, 'r'), (9, 'v'), (10, 'e'), (11, 'r'), (12, '.'), (13, 'i'), (14, 'n'), (15, 'f'), (16, 'o')]
|
In dem Fall musste ich die Funktion list() verwenden, da es sich um ein Objekt handelt, welches iteriert werden muss. Diese Funktion macht das bis zum Ende und gibt dann eine Liste der Werte aus. Da enumarate eine Tupel zurückgibt, kommt dann dieses Konstrukt zustande: [(Position, 'Buchstabe'), (Position, 'Buchstabe'), ...]
Die for-Schleife ist in der Lage die Werte aus der Tupel auf die beiden Variablen i und char zu speichern. Das ermöglicht mit den Werten getrennt weiterzuarbeiten.
Der Shift-Operator << verschiebt Bitweise nach links.
Beispiel
Dezimal /
Binär
10 /
1010 (0*1 + 1*2 + 0*4 + 1*
3 Bit nach links verschieben = 1010000 = (16 + 64) = 80
|
Source code
|
1
2
|
>>> 10 << 3
80
|
Ich hoffe, dass ich alles richtig erklärt habe. Ich selber code noch nicht so lange in Python.