Ich brauche für ein Übertragungsprotokoll eine Kodierung und zwar soll der Wert eines Oktetts als hex Zahl in die zwei ziffern zerlegt werden und dann noch ein offset von 0x40 addiert werden.
Mein Problem ist ich steh grad grob am schlauch wie ich die hex Zahl in C++ zerlegt bekomme.
Ich hoffe ihr könnt mir helfen und schon mal vielen dank im vorhinein.
mit freundlichen Grüßen Harald
Ich hab das einmal so gelöst, das ich das Oktett in 2 4ergruppen aufgeteilt habe und dann mit einer Mehrfachauswahl den Wert des quartetts verglichen habe und dann den demsntsprechende Hexwert ausgewählt habe. anschließend habe ich die beiden Hexzahlen in richtiger reihenfolge wieder aneinander gefügt.
also wurde aus z.B.:
0x41
0x04 0x01
oder hab ich das jetzt falsch verstanden weil so brauch ich das und hättest vll ein code beispiel für mich weil hab da sehr wenig ahnung leider bin bisschen ins kalte wasser gestoßen worden.
mit freundlichen Grüßen Harald
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Leider bin ich nicht so für c++ sondern C# aber vom prinzip kann man sagen, das A5-Hex aufgeteilt wurde auf A und 5 -> A-Hex = 1010 Bin / 5-Hex = 0101 Bin -> (1010)+(0101) -> A5-Hex = 10100101 Binär
Leider bin ich nicht so für c++ sondern C# aber vom prinzip
kann man sagen, das A5-Hex aufgeteilt wurde auf A und 5 ->
A-Hex = 1010 Bin / 5-Hex = 0101 Bin -> (1010)+(0101) -> A5-Hex
= 10100101 Binär
ok danke werd mal sehen was ich draus machen kann
mfg Harald
Wenn ich Dich richtig verstehe möchtest Du einen 8bit Wert in zwei 4bit Werte teilen. Das habe ich vor einiger Zeit mal wie folgt gelöst:
void make4 (unsigned short var) {
bitnumber.highbyte = ((var >> 4) & 0xF);
bitnumber.lowbyte = (var & 0xF);
}
Hoffe damit konnte ich Dir erstmal weiterhelfen.
Gruß Ruben
Jo danke habs geschafft
Hallo Harald,
ein simpler trick wäre einfach die Zahl die im Hex-format ausgeben zu lassen und in ein Char-Array zu speichern, so hättest du zugriff auf jede einzelne Stelle.
z.B.:
int a=12345;
char puffer[10];
sprintf(puffer,"%x",a)
mit %o könntest du das ganze als oktal anzeigen / ausgeben lassen. Das %x zeigt einen Wert als Hex an.
Hoffe das hilft dir weiter. ist zwar nicht wirklich hübsch mit sprintf aber sollte funktionieren.
mfg
Danke für die antwort habs aber schon anders gelöst.
MfG Harald