2009-10-15 42 views
10

Qui ci sono un milione di post su come convertire un carattere nel relativo valore ASCII.
Bene, voglio l'esatto contrario.
Ho un valore ASCII memorizzato come int e voglio visualizzare la sua rappresentazione di carattere ASCII in una stringa.Come convertire un valore ASCII in un carattere in .NET

es. Visualizzare il codice per convertire il numero 65 in A.

Quello che ho attualmente è String::Format("You typed '{0}'", (char)65)

ma questo si traduce in "You typed '65'" mentre io voglio che sia "You typed 'A'"

Sto usando C++/CLI ma credo che qualsiasi linguaggio .NET farebbe ...

(post-humously modificato per migliorare la domanda per i googler futuri)

+4

Er, "postumo" significa post morte. Voglio una parte della tecnologia che ti ha permesso di ottenere modifiche postume! – jason

+1

@Jason una delle premesse più importanti del montaggio postumo è che devi essere morto. Comunque non ti consiglio di provare a provarlo! : D (ovviamente intendevo post-risposta ma non è una parola) – demoncodemonkey

risposta

8

In C++:

int main(array<System::String ^> ^args) 
{ 
    Console::WriteLine(String::Format("You typed '{0}'", Convert::ToChar(65))); 
    return 0; 
} 
+1

E abbiamo un vincitore! Grazie :) – demoncodemonkey

7

per i valori ASCII, si dovrebbe essere solo in grado di cast in char? (C# :)

char a = (char)65; 

o come una stringa:

string a = ((char)65).ToString(); 
+1

Non mostra NUL, SOH per caratteri numerici da 0 a 9. Capito? –

+1

@ ManishDubey funzionerà bene; sono solo codici di controllo non stampabili –

1

appena lanciato esso; non potrebbe essere più semplice

// C# 
int i = 65; 
Console.WriteLine((char)i); 
18

Ci sono diversi modi, qui sono alcuni:

char c = (char)65; 
char c = Convert.ToChar(65); 
string s = new string(65, 1); 
string s = Encoding.ASCII.GetString(new byte[]{65}); 
+1

Gli ultimi due dovrebbero essere aggiunti con '[0]'. Cioè, per esempio, 'char c = new string (65, 1) [0];'. – jason

+1

@Jason: Sì, puoi farlo che lo vuoi veramente come char. Se ha intenzione di concatenarlo con altre stringhe, non ha senso creare una stringa per creare un char che sarà trasformato in una stringa prima che possa essere concatenato. – Guffa

2

La versione complessa, naturalmente, è:

public string DecodeAsciiByte(byte b) { 
    using(var w = new System.IO.StringWriter()) { 
     var bytebuffer = new byte[] { b }; 
     var charbuffer = System.Text.ASCIIEncoding.ASCII.GetChars(bytebuffer); 
     w.Write(charbuffer); 
     return w.ToString(); 
    } 
} 

Naturalmente, vale a dire prima di leggere la risposta utilizzando il metodo Encoding.GetString. D'oh.

public string DecodeAsciiByte(byte b) { 
    return System.Text.Encoding.ASCII.GetString(new byte[] { b }); 
} 
3
Dim str as string  
str = Convert.ToChar(65).ToString() 
msgbox(str) 
1

Ci sono molti modi per OD questo. Se si desidera che digitino cifre consecutive con delimiti e spazi, è possibile utilizzare qualcosa come:

string userInput = "123456"; 
    var digits = str.Select(c => Convert.ToInt32(c.ToString())); 
Problemi correlati