Почему моя функция C# возвращает позицию буквы в алфавите?
У меня есть функция, которая возвращает положение буквы в алфавите. Как это работает?
Вот так выглядит мой C#:
private int CalculateLetterPosition(char cCharacter)
{
int iReturn = 0;
int iCharacterValue = (int)cCharacter;
if (iCharacterValue >= 97 && iCharacterValue <= 122)
{
iReturn = iCharacterValue - 96;
}
return iReturn;
}
3 ответа
Так что все буквы (или chars
) иметь числовые представления. В принципе,
- Ваш код преобразует текстовое значение char в его числовое значение ASCII.
- Вычитает 96 из числового значения, поскольку 97 является кодом ASCII для "a".
- Конечным результатом будет положение в алфавите.
Например:
Вы предоставляете b
к вашей функции.
b
обозначает98
в таблице ASCII.98 - 96 = 2
В кодовой таблице ASCII маленькая буква "а" начинается в позиции 97 подряд. Поэтому вам нужно только вычесть 96 из его позиции ASCII. Ваш код работает только для строчных букв и только для букв в диапазоне ASCII.
char
2-байтовый тип, который на самом деле содержит символьную позицию в таблице Unicode
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/char
97
== 0x61
(шестнадцатеричный), и это позиция символа 'a'
- первый символ в алфавите
Вы можете взглянуть на таблицу Unicode - это должно помочь объяснить, как работает ваш код