【问题标题】:Convert convert int to alphabetical value将转换 int 转换为字母值
【发布时间】:2019-10-16 10:42:53
【问题描述】:

我想将 1-26 之间的 int 转换为相应的字母 char 字母

我在某个地方看到了我可以使用char outPut = (char)currentValue;Convert.ToChar(currentValue 但两者似乎都不起作用。我正在通过让程序将字符打印到控制台来对此进行测试。两次尝试都导致打印一个空字符

我正在制作一个程序,它接收char 字母,将其转换为int 以对其进行一些数学运算,然后将最终的int 转换回char 字母并打印@987654329 @到控制台

【问题讨论】:

    标签: c# char int


    【解决方案1】:
    char outPut = (char)currentValue;
    

    会给你一个代表一些空白字符的字符(因为它们被表示为不超过 32 的整数。)

    你真正想要的是一个代表字母的字符。以下代码将为您提供小写字母表中的第 i 个字母:

    char c = (char)((int)'a' + i - 1);
    

    或大写:

    char c = (char)((int)'A' + i - 1);
    

    它利用了字母由连续整数表示的事实。

    【讨论】:

      【解决方案2】:

      你可以用你想要的字符来偏移。在这种情况下,我使用'a'

      Console.WriteLine((char)(5 + 'a'));
      

      由于您的范围以1 开头,因此您需要使用'a'-1

      【讨论】:

      • 我知道这个答案只是说明了这项技术,但我仍然要指出,由于问题中的整数从 1 开始,因此实际上偏移量应该是 'a' - 1
      【解决方案3】:

      intchar可以使用ASCII表来回转换

      A 的 ASCII 值是 65。所以你可以通过这样做得到 char A

      char a = (char) 65;
      

      要使用 1-26 表示将其转换回来,只需执行

      int num = a - 65 + 1;
      

      当然,您需要进行一些边界检查以确保该数字在范围内。

      【讨论】:

      • 更相关的是,A 由单个 UTF-16 代码单元 (char) 表示,整数值为 65。从 C# 的基础知识回溯起来将是一个很长的故事周围为 ASCII。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-04
      • 2013-02-08
      • 2019-06-18
      • 2015-04-30
      • 2013-07-11
      • 1970-01-01
      相关资源
      最近更新 更多