ascii to ansi!
-
Hy hab ein Problem!
Ich habe einen Variable vom typ int und hab in der zB den wert A300 abgespeichert!
Der wert ist aber jetzt im ASCII CODE also: 65514848 -> A300Ich möchte jetzt das der wert dieser variable in ansi umgewandelt wird und in eine neue variable abgespeichert wird! Sagen wir die erste variable wo der ascii code drinn steht heißt: asci und der wert wo dann der umgewandelte wert drinnen ist heißt: ansi
Ich weiß bereits wie ich einfach EIN normales Asci zeichen in Ansi umwandle einfach als char deklarieren also so auf die art:
int zahl;
scanf("%d", &zahl);
printf("\n\nDie Zahl %d entspricht dem Zeichen %c\n", zahl, zahl);nur will ich jetzt das Zahl nicht ausgegeben wird sondern in ne neue variable gespeichert wird!
außerdem macht dieses programm Probleme wenn mehr als ein zeichen umgewandelt werden soll. Also 65 in A funzt, aber 6566 in AB schon mal nicht mehr..
hoffe jemand hat ne idee
-
Ist es das was Du willst?
Original aus MSDN
char *_itoa( int value, char *string, int radix );Required Header: <stdlib.h>
Return Value
Each of these functions returns a pointer to string. There is no error return.
Parameters
value
Number to be converted
string
String result
radix
Base of value; must be in the range 2 - 36
Remarks
The _itoa, _i64toa, and _ui64toa function convert the digits of the given value argument to a null-terminated character string and stores the result (up to 33 bytes) in string. If radix equals 10 and value is negative, the first character of the stored string is the minus sign ( ? ). _itow, _i64tow, and _ui64tow are wide-character versions of _itoa, _i64toa, and _ui64toa respectively.
Oder die zweite möglichkeit die ich da rausinterpretiere, die würde bedeuten, daß Du ein INT als CHAR-Array misbrauchen willst? Da wüsste ich Dir auch nicht zu helfen, das könnte ich höchstens per Hand ausrechnen...
Würde ungefähr so aussehen:
int DeinCharPseudoIntDingens; char a,b,c,d; a=(char)(DeinCharPseudoIntDingens%256) DeinCharPseudoIntDingens=(DeinCharPseudoIntDingens-(int)a)/256 b=(char)(DeinCharPseudoIntDingens%256) DeinCharPseudoIntDingens=(DeinCharPseudoIntDingens-(int)b)/256 c=(char)(DeinCharPseudoIntDingens%256) DeinCharPseudoIntDingens=(DeinCharPseudoIntDingens-(int)b)/256 d=(char)DeinCharPseudoIntDingens
So ungefähr währe das möglich, aber garantieren tue ich für nichts! Und wegen der Casts, gerade da bin ich mir absolut unsicher... Und ein Freund hat mir über ICQ eben das Wort reinterpret_cast oder so ähnlcih entgegengeworfen. Er meint damit müsste es gehen ist sich aber nicht sicher. Und aus der MSDN werde ich was das angeht auch nicht schlau
-
Als ich den Titel las dachte ich mir irgendwie die Frage wäre eindeutig....
Umlaute werden nicht richtig dargestellt weil z.B. was in DOS gespeichert und in Windows angezeigt werden soll.
Aber nach dem Beitrag wird es nicht so richtig klar.
Bitte die Frage mal umdefinieren
So gibt es zu viele mögliche Antworten.