2009-10-15 22 views
10

Hay un millón de publicaciones aquí sobre cómo convertir un carácter a su valor ASCII.
Bueno, quiero todo lo contrario.
Tengo un valor ASCII almacenado como int y quiero mostrar su representación de caracteres ASCII en una cadena.Cómo convertir un valor ASCII en un carácter en .NET

es decir, muestre el código para convertir el int 65 en A.

Lo que tengo actualmente es String::Format("You typed '{0}'", (char)65)

pero esto resulta en "You typed '65'" mientras que yo quiero que sea "You typed 'A'"

estoy usando C++/CLI pero supongo que cualquier lenguaje .NET haría ...

(post-editado póstumamente a mejorar la cuestión para los futuros empleados de Google)

+4

Er, "póstumo" significa postmuerte. ¡Quiero algo de la tecnología que te permitió lograr la edición póstuma! – jason

+1

@Jason una de las condiciones previas más importantes de la edición póstuma es que tienes que estar muerto. ¡Sin embargo, no te recomiendo que trates de probar esto! : D (por supuesto, quise decir pos-respuesta, pero esa no es una palabra) – demoncodemonkey

Respuesta

8

En C++:

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

¡Y tenemos un ganador! Gracias :) – demoncodemonkey

7

para valores ASCII, que sólo debe ser capaz de lanzar a char? (C :) #

char a = (char)65; 

o como una cadena:

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

No muestra NUL, SOH para caracteres numéricos de 0 a 9. ¿Lo tienes? –

+1

@ManishDubey funcionará bien; solo son códigos de control no imprimibles –

1

Justo lo echarás; no podría ser más simple.

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

Hay varias maneras, aquí hay algunos:

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

Los dos últimos se deben agregar con '[0]'. Es decir, por ejemplo, 'char c = nueva cadena (65, 1) [0];'. – jason

+1

@Jason: Sí, puedes hacerlo si realmente lo quieres como un char. Si va a concatenarlo con otras cadenas, no tiene sentido crear una cadena para crear un char que se convertirá en una cadena de nuevo antes de que pueda concatenarse. – Guffa

2

La versión compleja, por supuesto, es:

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(); 
    } 
} 

Por supuesto, esto es antes de leer la respuesta usando el método 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

Hay muchas maneras de OD esto. Si quisiera que escribieran dígitos consecutivos con delimitadores op y espacios, entonces podría usar algo como:

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