Zahl in Ansi Zeichen umwandel
-
Hi,
ich hab ne zahl in einer int variable. Wie bekomm ich das hin das der mir ein passendes zeichen der Ansi Zeichentabelle in einen String oder char speichert?
Danke
-
Unter Windows folgendermaßen (ich gehe davon aus, dass Du unter dieser Umgebung bist):
#include <windows.h> // ... int zeichen = 64; // Zeichen = @ char chr_oem = zeichen; char str_oem[2]; str_oem[0] = chr_oem; str_oem[1] = '\0'; char str_ansi[2]; OemToCharA(str_oem, str_ansi);/EDIT: 'str_ansi[0]' enthält jetzt Dein Zeichen im Windows-ANSI (Windows-1252)-Code.
/EDIT: Mist, hätte ich mal ausprobieren sollen. Klappt nicht.
-
Wenn du in dem int entweder 0,1,2,3...9 hast und dann in der char-Variable 0,1,2...9 stehen haben willst, könntest du es einfach mit einem switch machen:
char ZifferToChar(int Ziffer) { switch(Ziffer) { case 0: return '0'; case 1: return '1'; //und so weiter } }Ansonsten könnte man ausnutzen, dass bei ASCII-Code die Ziffern hintereinander in der Tabelle stehen. Wenn 0 als erstes ist (bin mir nicht mehr 100% sicher):
char ZifferToChar(int Ziffer) { return '0'+Ziffer; //Wenn Ziffer größer als 9 sein sollte, könnte man auch schreiben return '0'+(Ziffer%9); }Ich hoffe, ich habe die Frage richtig verstanden ^^
Felix
-
Hi,
Ich glaub die frage ist nocht so ganz angekommen. ich habe in der integer variable eine nummer vom ansizeichensatz. und zu der nummer hätte ich gerne das passende zeichen. auf die idee mit den abfragen (ob jetzt if oder switch mal dahingestellt) bin ich auch schon gekommen, aber das sind ja so an die 200 abfragen die ich machen müsste. Das muss doch irgendwie einfacher gehen.
-
Du meinst, du hast in dem int eine Nummer, die die Nummer im ASCII-Zeichensatz angibt? ALso aus dieser Tabelle:
http://de.wikipedia.org/wiki/ASCII#Zusammensetzung#
Wenn ja ist es GANZ einfach:
char ASCIICodeToChar(int ASCIICode) { return static_cast<char>(ASCIICode); }
Felix
-
Phoemuex schrieb:
Du meinst, du hast in dem int eine Nummer, die die Nummer im ASCII-Zeichensatz angibt
Nein, eben nicht ASCII (das wäre ja einfach) sondern Windows-ANSI (ist Windows-1252).