STring nach Integer (Hexadezimal) verwandeln

Wohl das A & O in der Windows-Programmierung

Moderatoren: crack, Krüsty, Marwin

STring nach Integer (Hexadezimal) verwandeln

Beitragvon Biehler-Productions » Freitag 13. April 2007, 15:18

Hi,
ich muss eine urldecode FUnktion schreiben.
In einem urlencodierten Datenbereich steht ja z.b. folgendes:
%0D%0Aabc%12

So, ich bräuchte nun eine WinAPI Funktion, die mir einen String (also z.b. "0D") in den entsprechenden Integer umwandelt.
Gibt es so eine, oder muss ich diese selber machen?

Ich hab kurz auf einer englischen Seite "atodw" im MASM Packet gefundne, doch ich schätze mal, ich kann der Funktion keinen String übergeben, der Hexadezimale Werte representiert?

//Edit:
OK. Ich glaub ich habs selber gelöst :oops:
htodw wird wohl das sein, was ich suche :oops:
mfg
Biehler-Productions
http://biehler-josef.de
Biehler-Productions
Member
 
Beiträge: 18
Registriert: Freitag 21. April 2006, 12:39

Beitragvon crack » Freitag 13. April 2007, 18:57

Jetzt bin ich etwas verwirrt, einen String in entsprechende Integers umwandeln:

  • Zählschleife
  • Pointer addressiert Das einzelne Stringbyte
  • atoi (ASCII to Integer) wandelt Hexadezimale Darstellung in Integers
  • stosb Speichert sie im Ausgabedatenfeld

Aber wenn das Problem ja schon erledigt ist, dann erübrigt sich das ja...
Meintest Du den tatsächlich URL? Oder eher IP Addresse?
mit freundlichen grüssen,
with best regards,

crack
Benutzeravatar
crack
Administrator
 
Beiträge: 280
Registriert: Dienstag 21. Dezember 2004, 15:02
Wohnort: 53783 Eitorf

Beitragvon Biehler-Productions » Freitag 13. April 2007, 19:50

crack hat geschrieben:
  • atoi (ASCII to Integer) wandelt Hexadezimale Darstellung in Integers

ich wuste gar nicht, dass ich der FUnbktion auch eine Hexadezimale Darstellung übergeben kann?

Meintest Du den tatsächlich URL? Oder eher IP Addresse?


Nö, ein PHP Script gibt Daten aus, und nach meine WIssen muss (bzw. sollte man um Fehler zu vermeiden), die Daten urlencodieren, damit alle nicht darstellbare Zeichen in eine darstellbare Schreibweise umgewandelt werden.

Und deshalb brauch ich eine Funktion, die die Daten wieder decodiert.
mfg
Biehler-Productions
http://biehler-josef.de
Biehler-Productions
Member
 
Beiträge: 18
Registriert: Freitag 21. April 2006, 12:39

Beitragvon crack » Freitag 13. April 2007, 20:00

Aha, also ich hatte das Problem immer 'Low Levelig' gelöst, ungefähr so:
Code: Alles auswählen
mov si, offset InputString
mov es, offset OutputString
L1:
lodsb
cmp al,'@' ;zum beispiel @ als zeichen für endes der Daten
jz 'Weg von Hier'
sub al,30h
cmp al,9
jle weiter
sub al,7
weiter:
stosb
jmp L1
...


IMHO einfach und sehr flexibel.
mit freundlichen grüssen,
with best regards,

crack
Benutzeravatar
crack
Administrator
 
Beiträge: 280
Registriert: Dienstag 21. Dezember 2004, 15:02
Wohnort: 53783 Eitorf

Beitragvon Biehler-Productions » Freitag 13. April 2007, 20:10

crack hat geschrieben:Aha, also ich hatte das Problem immer 'Low Levelig' gelöst, ungefähr so:
Code: Alles auswählen
mov si, offset InputString
mov es, offset OutputString
L1:
lodsb
cmp al,'@' ;zum beispiel @ als zeichen für endes der Daten
jz 'Weg von Hier'
sub al,30h
cmp al,9
jle weiter
sub al,7
weiter:
stosb
jmp L1
...


IMHO einfach und sehr flexibel.


Ich versuch grad die FUnktion zu verstehen:
DIe wandelt einen String wie:
"0D0A" in 3338 um?
Kapier ich irgendwie ned :oops:
mfg
Biehler-Productions
http://biehler-josef.de
Biehler-Productions
Member
 
Beiträge: 18
Registriert: Freitag 21. April 2006, 12:39

Beitragvon crack » Freitag 13. April 2007, 20:38

Biehler-Productions hat geschrieben:...
Ich versuch grad die FUnktion zu verstehen:
DIe wandelt einen String wie:
"0D0A" in 3338 um?
Kapier ich irgendwie ned :oops:


Nein, Schritt für Schritt:
'0' = Ascii: 30h -30h = 0h
'D' = Ascii: 44h - 30h = 14h - 7h = dh (
'0' = siehe oben
'A' = Ascii: 41h - 30h = 11h - 7h = ah

Axo, kommst Du durch ausprobieren auf das obige Ergebniss, ich glaube ich habe ein Clear Carry vergessen ....
mit freundlichen grüssen,
with best regards,

crack
Benutzeravatar
crack
Administrator
 
Beiträge: 280
Registriert: Dienstag 21. Dezember 2004, 15:02
Wohnort: 53783 Eitorf

Beitragvon Biehler-Productions » Freitag 13. April 2007, 20:49

crack hat geschrieben:
Biehler-Productions hat geschrieben:...
Ich versuch grad die FUnktion zu verstehen:
DIe wandelt einen String wie:
"0D0A" in 3338 um?
Kapier ich irgendwie ned :oops:


Nein, Schritt für Schritt:
'0' = Ascii: 30h -30h = 0h
'D' = Ascii: 44h - 30h = 14h - 7h = dh (
'0' = siehe oben
'A' = Ascii: 41h - 30h = 11h - 7h = ah

Axo, kommst Du durch ausprobieren auf das obige Ergebniss, ich glaube ich habe ein Clear Carry vergessen ....


Aso jetzt, thx :)

Naja, ich hab meine urldecode anders gemacht, trotzdem thx, die Funktion wred ich mir mal merken, evtl braucht man die mal.
mfg
Biehler-Productions
http://biehler-josef.de
Biehler-Productions
Member
 
Beiträge: 18
Registriert: Freitag 21. April 2006, 12:39

Beitragvon crack » Freitag 13. April 2007, 20:54

anstatt mit Stosb in ein Datenfeld, kann man auch mit Shift und Add die Ausgabe Stellenweise auf ein Register aufaddieren so das man das benötigte Word DoubleWord oder QuadWord erhält.
mit freundlichen grüssen,
with best regards,

crack
Benutzeravatar
crack
Administrator
 
Beiträge: 280
Registriert: Dienstag 21. Dezember 2004, 15:02
Wohnort: 53783 Eitorf


Zurück zu Windows-API

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder

cron