将数字转换为字符

时间:2015-05-20 15:20:25

标签: c# visual-studio-2010

以下代码将字符A-Z转换为1到26之间的数字,为简单起见,所有这些都是大写。

    static void Main(string[] args)
    {

        string letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        foreach (char c in letters)
        {
            Console.WriteLine(c +" = " + CharToNumber(c));
            Console.ReadLine();
        }
    }

    static int CharToNumber(char character)
    {
        // index starts at 0, 65 is the ascii code for A hence the program -64 so start at 1 therefore A=1
         return (int)Char.ToUpper(character) - 64;
    }

    static char NumberToChar(int number)
    {
        //  code here
    }
}

}

我正在尝试做同样的事情,反之亦然,因此将该数字转换回相同的字符。我不确定从哪里开始。任何想法都非常感谢,谢谢

2 个答案:

答案 0 :(得分:3)

实施只是

static char NumberToChar(int number)
{
    return (char) ('A' + number - 1); // "- 1" : You want to start from 1
}

相应地

static int CharToNumber(char character) 
{
    return character - 'A' + 1; // " + 1" : You want to start from 1
}

注意,在C#char中实际上是 16位整数,所以你可以转换它。

编辑:根据您之前的代码,您还想修改Main(string[] args)

  static void Main(string[] args) {
     ...
     // Reverse 
     for (int i = 1; i <= 26; ++i)
       Console.WriteLine(i + " = " + NumberChar(i));
       Console.ReadLine();
     } 
   }

答案 1 :(得分:0)

您可以直接从整数转换为字符,该字符返回具有相应Unicode值的字符。 A的Unicode值为65,其余的英文字母按顺序继续,因此您只需将64添加到您的数字并返回Unicode字符。有a number of ways to do that

如果你不想对Unicode偏移进行硬编码,你可以做到这一点:

static char NumberToChar(int number)
{
    int offset = (int)'A' - 1;
    return (char)(number + offset);
}