я не знаю, как каждый символ строки в цикле перекодировать в номер ASCII элемента. Имеется str - строка english\russian букв.
Это работает
byte[] bytes = Encoding.GetEncoding(1251).GetBytes(str);
А это нет - пишет,подчёркивает str[i] мол не удаётся char в char[] преобразовать.
Может это из-за того, что в первом случае массив, а тут нет.
Encoding.GetEncoding(1251).GetBytes(str[i])
Мне бы представление номера в int, чтобы через него вычислять позицию символа в алфавите
Windows-1251 - однобайтовая кодировка. Следовательно, в итоговом массиве каждый байт будет сооветствовать одному символу строки с тем же индексом. Поэтому можно сперва всю строку перевести в массив байт в этой кодировке, а потом итерироваться по массиву, получая коды символов.
var str = "Привет";
byte[] bytes = Encoding.GetEncoding(1251).GetBytes(str);
for (int i = 0; i < bytes.Length; i++)
Console.WriteLine(str[i] + " - " + bytes[i]);
На вход методу GetBytes нужно подавать строку или массив символов, но не один символ типа char. Поэтому следует преобразовывать символ в строку методом ToString.
Получившийся массив будет всегда иметь длину 1. Это и есть код символа.
var str = "Привет";
for (int i = 0; i < str.Length; i++)
{
byte[] bytes = Encoding.GetEncoding(1251).GetBytes(str[i].ToString());
Console.WriteLine(str[i] + " - " + bytes[0]);
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей