Ich bin mit einem einfachen Problem fest. Hier ist der Code:Packen zwei 8-Bit-Werte
int main(int argc, char **argv)
{
char buf[2] = {0xd, 0x1f};
unsigned int a;
a = ((buf[1] << 8) & 0xFF00) | buf[0];
printf("%d\n",a);
return 0;
}
Der Wert in a
, die ich brauche, ist 0x1FD(509)
aber wenn ich das obige Programm lief der Ausgang in a
ist 0x1F0D(7949)
.
Wie kann ich das erreichen?
EDIT: Ok lass mich klären. Ich mache ein Projekt, wo ich die Daten, wie im Code-Ausschnitt gezeigt, erhalte. Zur Vereinfachung habe ich sie als lokal deklariert. Hauptsache ich möchte, dass die Daten als 0x1FD(509)
interpretiert werden.
Ich finde es nicht klar, was Sie genau machen wollen. Btw @AdamLiss, ich kenne die Shift-and-or-Methode, aber ich glaube nicht, dass es klar ist, was Leo zu tun versucht. Wenn Sie 509 brauchen, warum schreiben Sie 0xd, 0x1f? Warum nicht stattdessen einen ganzzahligen Wert oder ein Array verwenden? Welches Problem versucht dieser Code zu lösen? –
Leo, ist @dasblinkenlight auf dem richtigen Weg? –
wollen Sie nur die Hex-Werte packen (ignorieren Sie Nullen)? –