Bestimmte Stellen aus einem Bytestream auslesen und diese dann umwandeln
-
Ich habe einen Bytestream gegeben.
z.B. 15010001100103C50000 oder auch 150100010601A303
jedes Byte stellt etwas bestimmtes dar, und sollte für sich aus gelesen werden können.
Wie greife ich den sinnvoll auf die letzten beiden Stellen zu, oder auch auf ein Byte in der Mitte z.B. C5 oder auch A3 ?
In diesem Fall muss ich die Werte von Hex in den Dezimalbereich umwandeln.
Gibt es hierfür schon passende Befehle?vorab Vielen Dank
-
In was für einer Datenstruktur bekommst du denn den Bytestream? Und "umwandeln" musst du idR nix, du musst es nur entsprechend ausgeben lassen

-
Wie hast du diese "Bytestreams" überhaupt im Programm vorliegen?
-
Der Wert liegt als "_bstr_t" vor.
ok, ich möchte wie schon erwähnt jeweils ein bestimmtest Bye herausnehmen und dieses von Hex in dez. umwandeln, bzw. in Dezimalwerten anzeigen lassen.
-
"_bstr_t" - das klingt wie eine Variation eines C-String's (char-Array). Arbeite dich doch mal durch die typedef's durch, was hinter dieser Bezeichnung steht.
Wenn ich recht habe, kannst du über Index-Zugriff an die einzelnen Zeichen der Eingabe rankommen - die mußt du nur noch in Hex-Ziffern umwandeln und zusammenfügen:
int hexnum(char c) { if(isdigit(c)) return c-'0'; else if(isalpha(c)) return toupper(c)-'A'+10; else return -1; } int byteval = hexnum(input[i])<<4 | hexnum(input[i+1]);
-
Ich wollte das mit CString Mid lösen, jedoch kann ich dies wohl nicht auf "_bstr_t" anwenden.
Wenn ich es richtig verstanden habe, bin ich allerdings auf "_bstr_t" angewiesen, da nur diese über die COM-Schnittstelle transportiert werden können.
-
Ich widerhole mich ja nur ungern, aber:
CStoll schrieb:
Arbeite dich doch mal durch die typedef's durch, was hinter dieser Bezeichnung steht.
Wofür steht der Bezeichner "_bstr_t" überhaupt?
Wenn es eine halbwegs "normale" VAriation von Strings ist, solltest du die einzelnen Zeichen eigentlich mit Index-Zugriff auslesen können - siehe mein Codefragment dort oben (input ist dein "Bytestream", i die interessante Position).