Hi
folgende Zeile Code habe ich irgendwo gefunden (ist jetzt egal woher):
Wann sag ich das noch mal immer... (-;
unsigned char buf[20]; scanf("%X %X %X", (unsigned int*)buf, (unsigned int*)buf+1, (unsigned int*)buf+2);
Sinn des Ganzen ist dass eine Zeile der Form "01 23 AB" von Hexziffern eingelesen werden soll wobei zwei Hexziffern ein Byte darstellen sollen.
Es funktioniert nicht und man macht sowas auch nicht unbedingt. Nur verstehe ich das Ergebnis nicht ganz, im Speicher steht dann
buf[0] = FF buf[1] = 0 buf[2] = 0
Ich könnt's mir eigentlich nur erklären wenn man davon ausgeht dass scanf() die Werte von rechts nach links füllt (und das Ganze auf einer Little-Endian-Maschine läuft, was ja bei IA32 der Fall ist).
Mir scheint, Du bist Dir etwas uneins. Du hast zwar ein Array of char, liesst darin aber ints ein. Bei mir kommt durchaus das, was ich erwarten wuerde. Bei Ausgabe mittels: for ( i = 0; i < 20; i++ ) { printf( "%d ", buf[i] ); } bekomme ich plausible Werte: 1 0 0 0 35 0 0 0 171 0 0 0 0 1 0 0 1 0 0 0 Bye P.S: Woher weisst printf eigentlich, ob ich ein char, int oder sonstwas uebergebe? Also woher weiss es, dass es fuer die Darstellung nur auf ein Byte zugreifen muss, wo doch %d auch fuer ints verwendbar ist? -- 1 Bodo Kaelberer 123 http://www.webkind.de/ 3 4 Politik ist, wenn viele sich streiten und keiner sich freut.