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 -> A300

    Ich 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.


Anmelden zum Antworten