Почему моя функция 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) иметь числовые представления. В принципе,

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

Например:

Вы предоставляете 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 - это должно помочь объяснить, как работает ваш код

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

Другие вопросы по тегам