(C++) "itoa" verrückter Wert?
-
Hallo zusammen,
ich habe hier ein ganz seltsames Phänomen, welches mir ganz schön Kopfzerbrechen bereitet.
Mit folgendem Code lese ich ein übergebenes Zeichen ein und will es in einen Binärwert umwandeln:
char* Buffer = new char[8]; itoa(Value[i],Buffer,2);
Sobald in Value[i] der Ascii-Wert 150 steht, steht in Buffer nicht "10010110" sondern "111111111111111111111110010110". Woher kann denn diese Wahnsinnszahl kommen? Liegt es an den Vorzeichen? Bis 127 geht es nämlich noch korrekt? Aber mit (unsigned...) kommt immer dasselbe raus.
Für eine kleine Hilfe wäre ich sehr dankbar,
Mipe
-
Was ist Value[]?
-
Buffer ist zu klein
wie soll der in 8 chars 8 Zahlen und eine 0 bekommen[ Dieser Beitrag wurde am 01.07.2003 um 11:56 Uhr von dreaddy editiert. ]
-
Das mit Buffer spielt keine Rolle, da ich vorher bei Buffer[20] dasselbe Ergebnis bekommen habe.
Value[] ist ein Char-Array, bei dem an Stelle [i] eben das Ascii-Zeichen 150 steht (genauer: '–' 150 (0xFFFFFF96))
Wenn ich mir die Hex-Zahl hinter den 150 anschaue, dann kann ich das schon verstehen. Sollte das nicht 0x000..96 sein?
Mipe
[ Dieser Beitrag wurde am 01.07.2003 um 12:09 Uhr von Mipe editiert. ]
-
Original erstellt von Mipe:
**
Wenn ich mir die Hex-Zahl hinter den 150 anschaue, dann kann ich das schon verstehen. Sollte das nicht 0x000..96 sein?
**wie gibst du die zahlen aus?
-
Du hast noch einen char überlauf.
char hat(wenn man es nicht anders im Compiler einstellt) den Zahlenbereich von 0-127 ... 150 ist da dann etwas viel.[ Dieser Beitrag wurde am 01.07.2003 um 12:27 Uhr von dreaddy editiert. ]
-
char: -127 bis 128
unsigned char 0 - 255?!
Die vielen Zeichen davor kommen vom - .
Versuch mal
unsigned char * Buffer = new unsigned char[8];
[ Dieser Beitrag wurde am 01.07.2003 um 12:48 Uhr von Knuddlbaer editiert. ]
-
Kein BCB-Problem. Verschoben nach "C++".