Не могу привести массив символов в значение int в C # - PullRequest
0 голосов
/ 30 сентября 2011

Я делаю шифр Цезаря и пытаюсь преобразовать значение символа каждой буквы в int, чтобы значение сдвига могло изменить его.

for (int i = 0; i < plainTextInput.Length; ++i)
{
   chars[i] = ((int)chars[i]) + shiftAmount;         
}

Он говорит, что не может конвертировать int в char.Как мне решить эту проблему?

Ответы [ 3 ]

1 голос
/ 30 сентября 2011

Вы должны явно привести его обратно:

for (int i = 0; i < plainTextInput.Length; ++i)
{
   chars[i] = (char)(((int)chars[i]) + shiftAmount);         
}

Тем не менее, вы скоро столкнетесь с неприятностями, когда пройдете мимо z.

0 голосов
/ 30 сентября 2011

Когда я компилирую этот код, я получаю следующее сообщение об ошибке:

Невозможно неявно преобразовать тип 'int' в 'char'. Явное преобразование существует (вам не хватает актерского состава?)

Почему да, вы пропустили состав:

chars[i] = (char)(((int)chars[i]) + shiftAmount);
0 голосов
/ 30 сентября 2011

Путем явного приведения:

chars[i] = (char)(((int)chars[i]) + shiftAmount);     

Я бы переписал твой цикл:

var enciphered = chars.Select(c => (char)((int)c + shiftAmount)).ToArray();

Что вы планируете делать, если перейдете на непечатный символ? Стандартный Цезарь шифрует. Вы должны включить это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...