tim0304 schrieb:
> Hallo,
>
> ich bekomme aus einem Gerät z.B die folgenden Hex Strings:
Hmm. Das ist missverständlich ausgedrückt.
Wahrscheinlich bekommst du vom Gerät erst mal einen Text.
Der könnte genausogut auch "Hugo" sein oder "Tante Emma". Bei dir ist er
halt "5E357F". Aber es ist erst mal nur ein Text. Bestehend aus
einzelnen Zeichen. Wobei jedes Zeichen aus dem Vorrat stammt, das man
zur Darstellung von Hexadezimalzahlen benötigt.
> 5E357F welchen ich umwandeln muss in 7F355E und dann als Dezimalzahl
> (String) ausgeben also 8336734.
Warum musst du den Text erst mal entsprechend verwürfeln?
Wenn du dir einfach immer 2 aufeinanderfolgende Zeichen rauspickst, die
als 2 stellige Hex-Zahl interpretierst und dann die 3 Einzelteile
entsprechend korrekt zusammenbaust, tut es das doch auch.
1 | 5E357F
|
2 |
|
3 | "5E" -> umbauen zu numerisch 0x5E
|
4 | "35" -> umbauen zu numerisch 0x35
|
5 | "7F" -> umbauen zu numerisch 0x7F
|
6 |
|
7 | (unsigned long)0x7F << 16 + 0x35 << 8 + 0x5E
|
man kann natürlich den Text auch entsprechend verwürfeln. Aber dann
braucht man immer noch eine Funktion, die aus "7F355E" die entsprechende
Zahl generieren kann. strtol() zb könnte das.
1 | decoded[0] = original[4];
|
2 | decoded[1] = original[5];
|
3 | decoded[2] = original[2];
|
4 | decoded[3] = original[3];
|
5 | decoded[4] = original[0];
|
6 | decoded[5] = original[1];
|
7 | decoded[6] = '\0';
|
8 |
|
9 | number = strtol( decoded, NULL, 16 );
|
dann hast du in number das numerishe Äquivalent und kannst damit machen
was du willst. Zum Beispiel ausgeben.
Edit:
Tut mir leid. Ich hab das C# überlesen.
Aber so oft kommt das nicht vor, dass sich jemand mit so einer C# Frage
hier her verirrt. So etwas ist eine klassische C Frage, die pro Woche 25
mal auftaucht.