Benötige Hilfe bei einem Return

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
CheckOut
User
Beiträge: 14
Registriert: Donnerstag 10. Januar 2008, 17:00

Dienstag 18. März 2008, 15:10

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
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Dienstag 18. März 2008, 15:26

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.
CheckOut
User
Beiträge: 14
Registriert: Donnerstag 10. Januar 2008, 17:00

Dienstag 18. März 2008, 15:42

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
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Dienstag 18. März 2008, 15:53

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.
CheckOut
User
Beiträge: 14
Registriert: Donnerstag 10. Januar 2008, 17:00

Dienstag 18. März 2008, 18:02

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
querdenker
User
Beiträge: 424
Registriert: Montag 28. Juli 2003, 16:19
Wohnort: /dev/reality

Dienstag 18. März 2008, 18:25

Wenn die alles startende Datei im python-Source vorliegt, kannst du dir mal
pycallgraph ansehen.
Antworten