2013-07-18 3 views
19

Я хочу создать приложение, в котором пользователь вводит число, и программа будет отбрасывать символ пользователю.Как преобразовать номер в символ ASCII?

Редактировать: Как насчет наоборот, изменение символа ascii на число?

+0

Пожалуйста, не редактируйте вопрос после того, есть ответы, чтобы сделать его новый вопрос (в этом случае обратного). Откройте новый вопрос. –

ответ

38

Вы можете использовать один из этих методов для преобразования числа в ASCII/Unicode/UTF-16 характер:

Вы можете использовать эти методы преобразования значения указанного 32-разрядного целого числа его Unicode характер:

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

Также ASCII.GetString декодирует диапазон байтов из массива байтов в строку:

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

Имейте в виду, что ASCIIEncoding не обеспечивает обнаружение ошибок. Любой байт, превышающий шестнадцатеричный 0x7F, декодируется как знак вопроса Unicode («?»).

+0

Отличный пример, это должен быть проголосовали за ответ! – Damian

+0

от https://msdn.microsoft.com/en-us/library/9hxt0028(v=vs.80).aspx Мне нужен символ с значением Dec 150 и Hex 96 ... я пробовал все 3 из вышеперечисленных но не возвращает мне правильный символ ..:/ – Samra

3

вы можете просто бросить его.

char c = (char)100; 
+2

Это не работает char c = (char) 48. c == 0 not 48 – nykwil

5

Edit: По желанию, я добавил проверку, чтобы убедиться, что введенное значение находится в пределах диапазона ASCII от 0 до 127. Если вы хотите, чтобы ограничить это до вас. В C# (и, я считаю, .NET в целом) char s представлены с использованием UTF-16, поэтому любое допустимое значение символа UTF-16 может быть передано в него. Однако, возможно, система не знает, как должен выглядеть каждый символ Юникода, чтобы он мог отображаться некорректно.

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

Это работает, но вам нужно установить минимальные/максимальные границы для вашего целочисленного ввода.Не все числа преобразуются в отображаемые символы ASCII. – MadHenchbot

+0

Как насчет преобразования символов ascii в число? –

+0

@CyraxNguyen: Вы можете просто отличить другой путь. 'int i = (int) 'a';' Это поместит значение ascii буквы 'a' в' i'. – Cemafor

3

Чтобы получить ascii для числа, вы просто будете передавать значение char в целое число.

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

Значение переменной теперь будет иметь 97, который соответствует значению этого символов ASCII

(Используйте эту ссылку для справки) http://www.asciitable.com/index/asciifull.gif

1

С # представляет символ в UTF-16 кодирования, а не ASCII. Поэтому преобразование целого числа в символ не имеет никакого значения для A-Z и a-z. Но я работал с ASCII-кодами помимо алфавитов и номера, которые не работали для меня, поскольку система использует код UTF-16. Поэтому я просматривал код UTF-16 для всех символов UTF-16. Вот этот модуль:

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

Я искал информацию о том, как преобразовать int в char, что привело меня сюда. Но мой вопрос состоял в том, чтобы преобразовать, например, int of 6 в char из '6'. Для тех, кто пришел сюда, как я, это то, как это сделать:

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

Или просто 'num + '0'' –

Смежные вопросы