2013-07-18 18 views
19

Voglio creare un'applicazione in cui l'utente dovrebbe inserire un numero e il programma restituirà un carattere all'utente.Come convertire un numero in un carattere ASCII?

Modifica: Che ne dici di vice versa, cambiando un carattere ascii in numero?

+0

Si prega di non modificare una domanda, dopo ci sono risposte per renderlo una nuova domanda (in questo caso l'inverso). Apri una nuova domanda. –

risposta

38

È possibile utilizzare uno di questi metodi per convertire numero a un ASCII/Unicode/UTF-16 carattere:

È possibile utilizzare questi metodi convertono il valore del numero intero con segno a 32 bit specificato alla sua Unicode carattere:

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

Inoltre, ASCII.GetString decodifica un intervallo di byte da una matrice di byte in una stringa:

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

Ricordare che, ASCIIEncoding non fornisce il rilevamento degli errori. Qualsiasi byte superiore a 0x7F esadecimale viene decodificato come punto interrogativo Unicode ("?").

+0

Grande esempio, questa dovrebbe essere la risposta votata! – Damian

+0

da https://msdn.microsoft.com/en-us/library/9hxt0028(v=vs.80).aspx ho bisogno del carattere con il valore di Dec 150 e Hex 96 ... ho provato tutti e 3 dei precedenti ma non mi restituisce il carattere giusto ..:/ – Samra

3

puoi semplicemente lanciarlo.

char c = (char)100; 
+2

Questo non funziona char c = (char) 48. c == 0 not 48 – nykwil

5

Edit: Su richiesta, ho aggiunto un controllo per assicurarsi che il valore immesso era all'interno della gamma ASCII da 0 a 127. Se si desidera limitare questo dipende da voi. In C# (e credo .NET in generale), char s sono rappresentati utilizzando UTF-16, quindi è possibile eseguire il cast di qualsiasi valore di carattere UTF-16 valido. Tuttavia, è possibile che un sistema non sappia come dovrebbe apparire ogni carattere Unicode, quindi potrebbe essere visualizzato in modo errato.

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

Funziona, ma è necessario impostare alcuni limiti minimi/massimi per l'input intero.Non tutti i numeri vengono convertiti in caratteri ASCII visualizzabili. – MadHenchbot

+0

Che ne dici di convertire caratteri ascii in numero? –

+0

@CyraxNguyen: puoi semplicemente lanciare l'altra via. 'int i = (int) 'a';' Questo inserirà il valore ascii della lettera 'a' in' i'. – Cemafor

3

Per ottenere ascii su un numero, devi semplicemente inserire il valore del char in un numero intero.

char ascii = 'a' 
int value = (int)ascii 

valore variabile avranno ora 97 che corrisponde al valore di tale carattere ASCII

(Utilizzare questo collegamento per riferimento) http://www.asciitable.com/index/asciifull.gif

1

C# rappresenta un carattere in UTF-16 codifica anziché ASCII. Quindi convertire un intero in carattere non fa alcuna differenza per A-Z e a-z. Ma stavo lavorando con codici ASCII oltre ad alfabeti e numeri che non funzionavano per me in quanto il sistema utilizza il codice UTF-16. Pertanto ho sfogliato il codice UTF-16 per tutti i caratteri UTF-16. Ecco il modulo:

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

Stavo cercando su Google come convertire un int in char, che mi ha ottenuto qui. Ma la mia domanda era di convertire per esempio int di 6 in char di '6'. Per coloro che sono venuti qui come me, questo è come farlo:

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

O semplicemente 'num + '0'' –

Problemi correlati