Seite 1 von 1

Benötige Hilfe bei einem Return

Verfasst: Dienstag 18. März 2008, 15:10
von CheckOut
Ich hoffe das hier ist das richtige Forum und ich hoffe ebenfalls das mir jemand helfen kann. ;)

Es geht um das folgende Return:

Code: Alles auswählen

return '-BC0091-' + sha(repr(time()) + x + str(getpid())).digest()[-12:]
Das ganze ist ein Client und das Return sorgt dafür, das das hier gesendet wird:


-BC0091-%93%26%27%85%CE%9DC%85%10%137%DA
Ich hätte jetzt allerdings gerne, das das ganze so aussieht:
-BC0091-%%%TEST%93%26%27%85%CE%9DC%85%10%137%DA
Das Problem ist, ich kann oben nicht einfach den Code auf das hier ändern:

Code: Alles auswählen

return '-BC0091-' + '%%%TEST' + sha(repr(time()) + x + str(getpid())).digest()[-12:]
Wenn ich das nämlich mache, wird folgendes Ausgegeben:
-BC0091-%25%25%25TEST%93%26%27%85%CE%9DC%85%10%137%DA
Das heißt hinter jedes % wird eine 25 gehängt (25 ist im Hexadezimalsystem das % Zeichen). Ich kann mir nicht erklären warum und ich finde einfach keine Lösung.

Ich hoffe mir kann bei dem Problem jemand helfen.

Ich selber habe mit sha noch nicht gearbeitet, vermutlich mache ich die ganze Zeit irgendwas falsch. Sha hat ja was mit MD5 Hash´s zu tun so wie ich das gelesen habe...

Ich bedanke mich schon mal für Antworten!

Gruß

CheckOut

Verfasst: Dienstag 18. März 2008, 15:26
von mkesper
Dein Problem hat nichts mit sha zu tun, sondern damit, daß der von Dir returnte String nochmal umgewandelt wird und dabei alle % durch %25 ersetzt werden. So sehen z.B. escapete Zeichen für URLs aus.

Verfasst: Dienstag 18. März 2008, 15:42
von CheckOut
mkallas hat geschrieben:Dein Problem hat nichts mit sha zu tun, sondern damit, daß der von Dir returnte String nochmal umgewandelt wird und dabei alle % durch %25 ersetzt werden. So sehen z.B. escapete Zeichen für URLs aus.
Gibt es eine Möglichkeit das so hinzukriegen das nur die % ausgegeben werden ohne die 25? Oder besteht da keine Chance?

Und danke für die schnelle Antwort. :)

Gruß

CheckOut

Verfasst: Dienstag 18. März 2008, 15:53
von mkesper
CheckOut hat geschrieben:Gibt es eine Möglichkeit das so hinzukriegen das nur die % ausgegeben werden ohne die 25?
Dafür müssten wir wissen, was nach dem return mit der Zeichenkette passiert, d.h. welcher Code das verarbeitet.

Verfasst: Dienstag 18. März 2008, 18:02
von CheckOut
mkallas hat geschrieben:
CheckOut hat geschrieben:Gibt es eine Möglichkeit das so hinzukriegen das nur die % ausgegeben werden ohne die 25?
Dafür müssten wir wissen, was nach dem return mit der Zeichenkette passiert, d.h. welcher Code das verarbeitet.
Mhmm, das könnte schwierig werden... Das Programm besteht aus mehreren 100 Dateien und ich wüsste jetzt auch nicht wo ich suchen könnte danach. In der selben Datei passiert damit jedenfalls nichts mehr, da das die letzte Zeile ist...

Ich dachte bis eben eigentlich damit nix mehr passiert, sondern das einfach das ist, was gesendet wird...

Aber danke für den Hinweis, ich werde mal schauen, ob ich die Klasse noch irgendwo anders finden kann...

Eine andere Möglichkeit gibt es ja wohl leider nicht.

Gruß

CheckOut

Verfasst: Dienstag 18. März 2008, 18:25
von querdenker
Wenn die alles startende Datei im python-Source vorliegt, kannst du dir mal
pycallgraph ansehen.