2009-10-15 12 views
10

Il ya un million de messages ici sur la façon de convertir un caractère à sa valeur ASCII.
Eh bien, je veux le contraire complet.
J'ai une valeur ASCII stockée comme un int et je veux afficher sa représentation de caractères ASCII dans une chaîne.Comment convertir une valeur ASCII en un caractère dans .NET

, par exemple, affichez le code pour convertir l'int 65 en A.

Ce que j'est actuellement String::Format("You typed '{0}'", (char)65)

mais il en résulte "You typed '65'" alors que je veux que ce soit "You typed 'A'"

J'utilise C++/CLI, mais je suppose que tout langage .NET ferait ...

(post-titre posthume pour améliorer la question des futurs Googlers modifié)

+4

Er, "posthume" signifie après la mort. Je veux une partie de la technologie qui vous a permis de réaliser un montage posthume! – jason

+1

@Jason l'une des conditions préalables les plus importantes de l'édition posthume est que vous devez être mort. Cependant, je ne vous recommande pas d'essayer de tester cela! : D (bien sûr, je voulais dire post-répondu, mais ce n'est pas un mot) – demoncodemonkey

Répondre

8

En C++:

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

Et nous avons un gagnant! Merci :) – demoncodemonkey

7

pour les valeurs ASCII, vous devriez juste être en mesure de jeté au char? (C# :)

char a = (char)65; 

ou comme une chaîne:

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

Il ne montre pas NUL, SOH pour les caractères numériques de 0 à 9. Got it? –

+1

@ManishDubey ça va bien fonctionner; ce sont juste des codes de contrôle non-imprimables –

1

fonte Il suffit; ne pouvait pas être plus simple.

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

Il y a plusieurs façons, voici quelques-uns:

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

Les deux derniers doivent être ajoutés avec '[0]'. C'est, par exemple, 'char c = new string (65, 1) [0];'. – jason

+1

@Jason: Oui, vous pouvez le faire que vous le voulez vraiment comme un char. S'il va le concaténer avec d'autres chaînes, il ne sert à rien de créer une chaîne pour créer un char qui sera à nouveau transformé en chaîne avant de pouvoir être concaténé. – Guffa

2

La version complexe, bien sûr, est la suivante:

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

Bien sûr, cela est avant d'avoir lu la réponse à l'aide la méthode 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

Il y a plusieurs façons de ce od. Si vous voulez qu'ils tapent des chiffres consécutifs avec des délimiteurs op et des espaces, alors vous pouvez utiliser quelque chose comme:

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