Ich habe Code in einem C-Programm mit Hex-Daten, die ich iteriert werden soll, beispielsweise jede der Hex-Bytes auszudrucken:C Druck hex Bytes
char input[] = "\x31\xd2\xb2\x30";
for (int i = 0; i < strlen(input); i++) {
printf("%02X\n", input[i]);
}
Allerdings ist der Ausgang nicht, was ich erwarten, beispielsweise der oben genannte Druck:
31
FFFFFFD2
FFFFFFB2
30
ich habe versucht, auch die Ausgabe als (unsigned int)
gegossen, jedoch erhalte ich die gleiche Leistung.
Kann jemand auf das Problem mit diesem einfachen Skript hinweisen?
Auf Ihrem System ist 'char' wahrscheinlich" signiert ". Die Daten '\ xd2' sind also negativ. Sie übergeben diesen Wert an "printf" und es wird auf "int" hochgestuft, das ebenfalls signiert ist. Der Formatbezeichner '% X' erwartet jedoch einen' unsigned int' und interpretiert die Binärdaten entsprechend. Es ist * undefiniertes Verhalten *. –