【问题标题】:How to get a char from an ASCII Character Code in C#如何从 C# 中的 ASCII 字符代码中获取字符
【发布时间】:2010-08-05 13:04:37
【问题描述】:

我正在尝试在 C# 中解析一个文件,该文件具有由 ASCII 字符代码 0、1 和 2 分隔的字段(字符串)数组(在 Visual Basic 6 中,您可以使用 Chr(0) 或 Chr(1) 生成这些文件)等等)

我知道对于 C# 中的字符代码 0,您可以执行以下操作:

char separator = '\0';

但这不适用于字符代码 1 和 2?

【问题讨论】:

    标签: c# character-encoding ascii escaping


    【解决方案1】:

    两种选择:

    char c1 = '\u0001';
    char c1 = (char) 1;
    

    【讨论】:

    • char sep = '\x32'; ?
    • @ngoozeff:我不喜欢\x,出于各种原因,不建议使用它。
    • LOL - 给你更多的分数让我很沮丧,乔恩,但无论如何感谢你的回答:P
    • 可能每个人都清楚 - 但只是为了明确。在此答案的第一个选项中,数字是十六进制的字符代码。在第二个选项中,它是小数。显然 1(decimal) = 1(hex) 但对于更高的代码它不是!例如:char c = '\u0021' 等价于char c = (char)33 等价于char c = '!'
    • @NaveedKhan:不是问题所在。
    【解决方案2】:

    你可以简单地写:

    char c = (char) 2;
    

    char c = Convert.ToChar(2);
    

    或者更复杂的选项,仅用于 ASCII 编码

    char[] characters = System.Text.Encoding.ASCII.GetChars(new byte[]{2});
    char c = characters[0];
    

    【讨论】:

    • 鉴于我们正在讨论两个小于 128 的特定值,后一个选项似乎不必要地冗长。 Unicode 旨在匹配 ASCII。
    • 如果要转换多于1个字节或者数组就好了。
    【解决方案3】:

    请务必注意,在 C# 中,char 类型存储为 Unicode UTF-16。

    从 ASCII 等效整数到字符

    char c = (char)88;
    

    char c = Convert.ToChar(88)
    

    从 char 到 ASCII 等效整数

    int asciiCode = (int)'A';
    

    文字必须是 ASCII 等价的。例如:

    string str = "Xสีน้ำเงิน";
    Console.WriteLine((int)str[0]);
    Console.WriteLine((int)str[1]);
    

    将打印

    X
    3626
    

    扩展的 ASCII 范围从 0 到 255。

    从默认的 UTF-16 文字到字符

    使用符号

    char c = 'X';
    

    使用 Unicode 代码

    char c = '\u0058';
    

    使用十六进制

    char c = '\x0058';
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-12
      • 1970-01-01
      • 1970-01-01
      • 2017-10-28
      • 1970-01-01
      • 2020-06-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多