2009-10-15 4 views
10

Здесь миллион сообщений о том, как преобразовать символ в его значение ASCII.
Ну, я хочу полную противоположность.
У меня есть значение ASCII, сохраненное как int, и я хочу отобразить его представление символа ASCII в строке.Как преобразовать значение ASCII в символ в .NET.

Укажите код для преобразования int 65 в A.

То, что я в настоящее время String::Format("You typed '{0}'", (char)65)

, но это приводит к "You typed '65'", тогда как я хочу, чтобы это было "You typed 'A'"

Я использую C++/CLI, но я предполагаю, что любой язык .NET будет делать ...

(отредактированный пост-humously улучшить этот вопрос для будущих Googlers)

+4

Er, "посмертное" означает сообщение смерти. Я хочу, чтобы некоторые из технологий позволили вам добиться посмертного редактирования! – jason

+1

@ Джейсон - одна из важнейших предпосылок посмертного редактирования, заключающаяся в том, что вы должны быть мертвы. Однако я не рекомендую вам проверять это! : D (конечно, я имел в виду пост-ответ, но это не слово) – demoncodemonkey

ответ

8

В C++:

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

И у нас есть победитель! Спасибо :) – demoncodemonkey

7

для значений ASCII, вы должны просто быть в состоянии бросать на char? (C# :)

char a = (char)65; 

или в виде строки:

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

Он не показывает NUL, SOH для цифровых символов от 0 до 9. Получил? –

+1

@ManishDubey будет хорошо работать; они просто непечатаемые управляющие коды –

1

Просто бросить его; не может быть проще.

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

Есть несколько способов, вот некоторые из них:

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

Последние два должны быть добавлены с помощью '[0]'. То есть, например, 'char c = новая строка (65, 1) [0];'. – jason

+1

@ Джейсон: Да, вы можете сделать это, вы действительно хотите, чтобы он был символом. Если он собирается объединить его с другими строками, нет смысла создавать строку для создания символа, который будет снова преобразован в строку, прежде чем он сможет быть объединен. – Guffa

2

Комплекс версия, конечно, есть:

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

Конечно, это прежде, чем я прочитал ответ, используя метод Encoding.GetString. D'о.

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

Есть много способов О.Д. это. Если вы хотите, чтобы они набирали последовательные цифры без пробелов и пробелов, то вы могли бы использовать что-то вроде:

string userInput = "123456"; 
    var digits = str.Select(c => Convert.ToInt32(c.ToString())); 
Смежные вопросы