Почему моя функция C # возвращает позицию буквы в алфавите? - PullRequest
0 голосов
/ 27 января 2019

У меня есть функция, которая возвращает положение буквы в алфавите.Как это работает?

Вот так выглядит мой C #:

    private int CalculateLetterPosition(char cCharacter)
    {
        int iReturn = 0;
        int iCharacterValue = (int)cCharacter;
        if (iCharacterValue >= 97 && iCharacterValue <= 122)
        {
            iReturn = iCharacterValue - 96;
        }
        return iReturn;
    }

Ответы [ 3 ]

0 голосов
/ 27 января 2019

char - это 2-байтовый тип, который фактически содержит позицию символа в таблице Unicode

https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/char

97 == 0x61 (hex), и это позиция символа'a' - первый символ в алфавите

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

https://unicode -table.com / ru/

0 голосов
/ 27 января 2019

Таким образом, все буквы (или chars) имеют числовые представления.В основном,

  1. Ваш код преобразует значение текстового символа в его числовое значение ASCII .
  2. Вычитает 96 из числового значения, поскольку 97 является кодом ASCII для 'a '.
  3. Конечным результатом будет позиция в алфавите.

Например:

Вы предоставляете b для своей функции.

  • b означает 98 в таблице ASCII.
  • 98 - 96 = 2
0 голосов
/ 27 января 2019

в кодовой таблице ASCII маленькая буква "а" начинается в позиции 97 в строке.Поэтому вам нужно только вычесть 96 из его позиции ASCII.Ваш код работает только для строчных букв и только для букв в диапазоне ASCII.

...