#c# #ascii
#c# #ascii
Вопрос:
Я пытаюсь найти способ взять строку и сохранить ее в виде массива ее значений ASCII в виде целых чисел
ie; строка 1 = привет
массив 72,69 и т. д
Комментарии:
1. Почему? Строка уже является массивом символов.
2. Что, если строка содержит символы, которые не являются частью набора символов ASCII?
3. @Хенк Холтерман: Нет, это две разные вещи. Для начала: строка является неизменяемой, тогда как массив символов — нет.
4. @MartinStettner класс string внутренне поддерживает массив символов.
5. @Magnus Да, но, тем не менее, это разные вещи с точки зрения языка. Например, «внутренний» массив может совместно использоваться разными
String
экземплярами, что, кстати, связано с тем, чтоString
они неизменяемы. Если бы они были «одним и тем же», вам бы не понадобился класс string…
Ответ №1:
var arr = Encoding.ASCII.GetBytes("Hello");
Комментарии:
1. Помните о преобразованиях, которые здесь происходят, когда ваша входная строка не является чистым ASCII.
2.
var
Вид скрывает, что результатом являетсяbyte[]
3. Что ж, функция вызвана
GetBytes
Ответ №2:
Чтобы немного расширить комментарий Хенка, строка уже представляет собой массив 16-разрядных целых чисел (shorts), представляющих кодовую точку каждого символа в Юникоде (но смотрите ниже). Если ваша строка полностью состоит из «ASCII» (кодовые точки ниже 128), то выполнение приведенного ниже кода приведет к тому, что вы ожидаете:
string s = "hello";
foreach (char c in s)
{
Console.WriteLine((short)c);
}
104
101
108
108
111
Используйте s.ToCharArray()
для извлечения этого массива и делайте с ним, что хотите. Обратите внимание, что строки могут содержать любой символ Юникода, и ваша программа должна понимать это (включая случай, когда для представления одного символа требуется более одного короткого).
Комментарии:
1. Как я мог бы использовать это для упорядочивания набора строк в алфавитном порядке
2. Если вам нужно упорядочить коллекцию строк.
myList.OrderBy(s => s);
Ответ №3:
Вы настаиваете на кодировке ASCII (как насчет всех других возможных символов)?. Если нет, то есть если вам нужен массив символов Unicode, я бы предложил использовать
myString.ToCharArray();
или
myString.ToCharArray().Cast<int>().ToArray();
(последнее, если вам нужны int
значения)