【问题标题】:How To Convert A Number To an ASCII Character?如何将数字转换为 ASCII 字符?
【发布时间】:2021-05-20 16:20:20
【问题描述】:

我想创建一个应用程序,用户可以在其中输入一个数字,然后程序会向用户返回一个字符。

编辑:反之亦然,将 ascii 字符更改为数字?

【问题讨论】:

  • 请不要在有答案后编辑问题以使其成为新问题(在这种情况下是相反的)。打开一个新问题。

标签: c# windows function winforms ascii


【解决方案1】:

您可以使用以下方法之一将数字转换为 ASCII / Unicode / UTF-16 字符:

您可以使用这些方法将指定的 32 位有符号整数的值转换为其 Unicode 字符:

char c = (char)65;
char c = Convert.ToChar(65); 

另外,ASCII.GetString 将字节数组中的一系列字节解码为字符串:

string s = Encoding.ASCII.GetString(new byte[]{ 65 });

请记住,ASCIIEncoding 不提供错误检测。任何大于十六进制 0x7F 的字节都被解码为 Unicode 问号(“?”)。

【讨论】:

【解决方案2】:

编辑:应要求,我添加了一项检查以确保输入的值在 0 到 127 的 ASCII 范围内。是否要限制这取决于您。在 C#(我相信一般是 .NET)中,chars 使用 UTF-16 表示,因此任何有效的 UTF-16 字符值都可以转换为它。但是,系统可能不知道每个 Unicode 字符应该是什么样子,因此它可能会显示不正确。

// Read a line of input
string input = Console.ReadLine();

int value;
// Try to parse the input into an Int32
if (Int32.TryParse(input, out value)) {
    // Parse was successful
    if (value >= 0 and value < 128) {
        //value entered was within the valid ASCII range
        //cast value to a char and print it
        char c = (char)value;
        Console.WriteLine(c);
    }
}

【讨论】:

  • 这可行,但您需要为整数输入设置一些最小/最大界限。并非所有数字都转换为可显示的 ASCII 字符。
  • ascii字符转成数字怎么样?
  • @CyraxNguyen:你可以简单地转换成另一种方式。 int i = (int)'a'; 这会将字母a 的ascii 值放入i
【解决方案3】:

要将 ascii 转换为数字,只需将 char 值转换为整数。

char ascii = 'a'
int value = (int)ascii

变量值现在将有 97,对应于该 ascii 字符的值

(使用此链接作为参考) http://www.asciitable.com/index/asciifull.gif

【讨论】:

    【解决方案4】:

    你可以简单地投射它。

    char c = (char)100;
    

    【讨论】:

      【解决方案5】:

      我在谷歌上搜索如何将 int 转换为 char,这让我来到了这里。但我的问题是将例如 int of 6 转换为 char of '6'。 对于像我一样来到这里的人来说,这是如何做到的:

      int num = 6;
      num.ToString().ToCharArray()[0];
      

      【讨论】:

      • 或者干脆num + '0'
      【解决方案6】:

      C# 以 UTF-16 编码而不是 ASCII 表示字符。因此,将整数转换为字符对 A-Z 和 a-z 没有任何影响。但是我正在使用除了字母和数字之外的 ASCII 代码,因为系统使用 UTF-16 代码,这对我不起作用。因此,我浏览了所有 UTF-16 字符的 UTF-16 代码。这是模块:

      void utfchars()
      {
       int i, a, b, x;
       ConsoleKeyInfo z;
        do
        {
         a = 0; b = 0; Console.Clear();
          for (i = 1; i <= 10000; i++)
          {
           if (b == 20)
           {
            b = 0;
            a = a + 1;
           }
          Console.SetCursorPosition((a * 15) + 1, b + 1);
          Console.Write("{0} == {1}", i, (char)i);
         b = b+1;
         if (i % 100 == 0)
        {
       Console.Write("\n\t\t\tPress any key to continue {0}", b);
       a = 0; b = 0;
       Console.ReadKey(true); Console.Clear();
       }
      }
      Console.Write("\n\n\n\n\n\n\n\t\t\tPress any key to Repeat and E to exit");
      z = Console.ReadKey();
      if (z.KeyChar == 'e' || z.KeyChar == 'E') Environment.Exit(0);
      } while (1 == 1);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-03-02
        • 1970-01-01
        • 1970-01-01
        • 2011-10-03
        • 2015-11-16
        • 2011-07-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多