ASCII 2 Hex, wie verarbeite ich Daten aus WinSock ?
-
Hiho,
mal angenommen ich habe den ganzen Socketkram hinter mir, alles funzt prima, ich kann Datenpackete senden und empfangen.
Jetzt empfang ich ein Datenpacket, sagen wir mal in diesem Format:
struct Packet { WORD size; // groesse BYTE data[1000]; // daten };sagen wir mal das Datenpacket sieht so aus: 05HALLO
Wie bekomme ich es jetzt aber so hin, dass er mit den ganzen Kram in Hex ausgibt, statt in "Lautschrift" bzw. ASCII (wenn das kein ASCII ist entschuldige ich mich, bin ja noch am Lernen).
Ich hab jetzt schon ne ganze menge Versucht, obs jetzt die Konvertierung von ASCII 2 Decimal 2 Hex ist, oder von ASCII per ">> 4" auf Decimal runter oder was auch immer, ich komm da nicht wirklich voran.
Anstatt dem 05HALLO soll er mit sozusagen 30 35 48 41 4C 4C 4F ausgeben.
Wer wagt dies zu bewerkstelligen?
Bin am Verzweifeln!
Außerdem würde ich gerne wissen, wie man dann beispielsweise nur die ersten 2 Bytesätze in eine eigene WORD Variable speichern kann. Da die ganzen Daten ja leider direkt als chars gespeichert werden, finde ich da keine passende Lösung.

MfG. paSe
-
was? du castest das nattüllich
struct Packet { WORD size; // groesse BYTE data[1000]; // daten }; struct Packet send_packet; ... send(s, (const char*)&send_packet, bla, bla); ... struct Packet recv_packet; recv(s, (const char*)&recv_packet, bla, bla);

-
Nee, da hast du mich glaub ich missverstanden.
Ich weiß jetzt auch endlich wo mein Problem liegt.
Beispiel:
char x = 0x0025; cout<<hex<<(int)x;Und was ist die Ausgabe? ICH erwarte da eigentlich
2500!
Was kommt?
250Das ist der Grund wieso meine Hexcodes immer so wirr und unvollständig aussahen.
Wie kann man das Problem umgehen, dass er mir die Nullen rauswirft?
Weil wenn ich jetzt nen längeres Packet bekomme.. sagen wir mal EIGENTLICH
25 00 04 29 00dann würde ja ja nur
25 0 4 29 0stehen ... das würde dann zusammengedrückt
2504290aussehen.
Wie soll ich da jetzt unterscheiden, ob das 2te jetzt 0x04 oder 0x0 und 0x04 ist?
Und eben noch als kleinen Reminder ;):
Ich hab meinen Buffer mit 2500 als ASCII drin.
Das wandel ich jetzt in Hex um und will das dann als WORD zusammenfassen.
Nur wie?
WORD packet; char buffer[256]; buffer[0] = 0x25; buffer[1] = 0x00; cout<<hex<<(int)buffer[0]<<(int)buffer[1]; // gibt leider nur 250 statt 2500 aus (mein 1. problem) cout<<endl; packet = buffer[0] + buffer[1]; // funktioniert nicht so wie es soll cout<<packet; // denn hier gibt er auch keine nullen aus