Hexadezimal-Zahlen werden mit ffffff ausgegeben
-
Hallo Leute,
ich habe ein Array mit lauter hexadezimalen Zahlen.
Wenn ich diese ausgebe, so werden manche Zahlen nicht einfach
als cd oder a5 ausgegeben, sondern eben als ffffffcd und
ffffffa5.
(Ähnliche PÜrobleme sind scheinbar hier: http://www.c-plusplus.net/forum/viewtopic-var-t-is-61549-and-highlight-is-ffffff.html
und hier: http://www.c-plusplus.net/forum/viewtopic-var-t-is-61581-and-postdays-is-0-and-postorder-is-asc-and-highlight-is-ffffff-and-start-is-0.html
aufgetreten.)Mein Problem ist allerdings, dass ich die Zahlen weder aus einer Datei, noch aus der konsole einlese, sondern sie im Quellcode mit 0x?? definiert habe.
Darüberhinaus werden die Zahlen nicht nur falsch ausgegeben, sondern auch beim Rechnen mit xor werden die ffffff mit einbezogen, als gehörten sie dazu.Das Array ist als char definiert, also etwa:
char array[256] = { ... 0x81, 0xce, 0x25, 0xf6, 0x11, 0xfa, ... };
(habs mal bisschen abgekürzt)
Woran kann das liegen, bzw. wie kann ich es beheben?
-
nimm explizit
unsigned char
(Erklärung: char ist bei deiner Implementierung wohl signed. Beim Ausgeben werden die chars von dir wohl als Integer behandelt, bei negativen Zahlen werden dann beim expandieren eben lauter binäre 1en angefügt und keine Nullen)
-
Vielen Dank, es funktioniert in der Tat,
auch wenn ich keine negativen Zahlen in meinem
Array habe.