2013-07-18 14 views
19

Ich möchte eine Anwendung erstellen, wo Benutzer eine Nummer eingeben würde und das Programm wird ein Zeichen an den Benutzer zurückwerfen.Wie konvertiert man eine Zahl in ein ASCII-Zeichen?

Edit: Wie wäre es umgekehrt, ein Ascii-Zeichen in Nummer zu ändern?

+0

Bitte keine Änderungen vornehmen eine Frage nach dort Antworten sind es eine neue Frage zu machen (in diesem Fall der inversen). Öffnen Sie eine neue Frage. –

Antwort

38

Sie eine dieser Methoden verwenden können Nummer in eine ASCII konvertieren/Unicode/UTF-16 Charakter:

können Sie verwenden diese Methoden den Wert der angegebenen 32-Bit-Ganzzahl mit Vorzeichen seiner Unicode konvertiert Charakter:

char c = (char)65; 
char c = Convert.ToChar(65); 

auch ASCII.GetString dekodiert eine Reihe von Bytes von einem Byte-Array in einen String:

string s = Encoding.ASCII.GetString(new byte[]{ 65 }); 

Beachten Sie, dass ASCIIEncoding keine Fehlererkennung bietet. Jedes Byte größer als hexadezimal 0x7F wird als das Unicode-Fragezeichen ("?") Decodiert.

+0

Großartiges Beispiel, dies sollte die Antwort sein! – Damian

+0

von https://msdn.microsoft.com/en-us/library/9hxt0028(v=vs.80).aspx Ich brauche das Char mit Dec-Wert 150 und Hex 96 ... Ich habe alle 3 der oben genannten versucht aber gibt mir nicht das richtige Zeichen ..:/ – Samra

3

können Sie es einfach werfen.

char c = (char)100; 
+2

Dies funktioniert nicht char c = (char) 48. c == 0 nicht 48 – nykwil

5

Edit: Auf Wunsch habe ich einen Scheck der eingegebene Wert war im ASCII-Bereich von 0 bis 127. Egal, ob Sie an Ihnen, um sicherzustellen, dass dies einschränken wollen. In C# (und ich glaube .NET im Allgemeinen), werden char s mit UTF-16 dargestellt, so dass jeder gültige UTF-16-Zeichenwert in ihn umgewandelt werden kann. Es ist jedoch möglich, dass ein System nicht weiß, wie jedes Unicode-Zeichen aussehen sollte, damit es nicht korrekt angezeigt wird.

// Read a line of input 
string input = Console.ReadLine(); 

int value; 
// Try to parse the input into an Int32 
if (Int32.TryParse(input, out value)) { 
    // Parse was successful 
    if (value >= 0 and value < 128) { 
     //value entered was within the valid ASCII range 
     //cast value to a char and print it 
     char c = (char)value; 
     Console.WriteLine(c); 
    } 
} 
+0

Dies funktioniert, aber Sie müssen einige minimale/maximale Grenzen für Ihre Ganzzahleingabe festlegen.Nicht alle Zahlen werden in anzeigbare ASCII-Zeichen konvertiert. – MadHenchbot

+0

Wie konvertiert man ASCII-Zeichen in Zahlen? –

+0

@CyraxNguyen: Sie können einfach den anderen Weg werfen. 'int i = (int) 'a';' Dies wird den ASCII-Wert des Buchstabens 'a' in 'i' setzen. – Cemafor

1

C# steht für ein Zeichen in UTF-16-Codierung eher

(als Referenz verwenden diesen Link) zu dem Wert dieses ASCII-Zeichen entspricht, ASCII. Daher macht die Umwandlung einer Ganzzahl in ein Zeichen keinen Unterschied für A-Z und a-z. Aber ich arbeitete mit ASCII-Codes neben Alphabeten und Zahlen, die für mich nicht funktionierten, da das System UTF-16-Code verwendet. Daher habe ich UTF-16-Code für alle UTF-16-Zeichen durchsucht. Hier ist das Modul:

void utfchars() 
{ 
int i, a, b, x; 
ConsoleKeyInfo z; 
    do 
    { 
    a = 0; b = 0; Console.Clear(); 
    for (i = 1; i <= 10000; i++) 
    { 
    if (b == 20) 
    { 
     b = 0; 
     a = a + 1; 
    } 
    Console.SetCursorPosition((a * 15) + 1, b + 1); 
    Console.Write("{0} == {1}", i, (char)i); 
    b = b+1; 
    if (i % 100 == 0) 
    { 
Console.Write("\n\t\t\tPress any key to continue {0}", b); 
a = 0; b = 0; 
Console.ReadKey(true); Console.Clear(); 
} 
} 
Console.Write("\n\n\n\n\n\n\n\t\t\tPress any key to Repeat and E to exit"); 
z = Console.ReadKey(); 
if (z.KeyChar == 'e' || z.KeyChar == 'E') Environment.Exit(0); 
} while (1 == 1); 
} 
0

Ich googelte darüber, wie man ein int in char, das hat mich hier. Aber meine Frage war zum Beispiel, int von 6 in char von '6' zu konvertieren. Für diejenigen, die hier wie ich kamen, das ist, wie es geht:

int num = 6; 
num.ToString().ToCharArray()[0]; 
+0

Oder einfach 'num + '0'' –

Verwandte Themen