如何在C#

时间:2017-04-12 13:20:40

标签: c# asp.net string character ascii

以下是C#中的字符串,我将其转换为字符数组&需要获取字符串中每个字符的ASCII值。

static void Main(string[] args)
    {
        string s = "Test";
        var arr = s.ToCharArray();
        foreach(var a in arr)
        {
            var n = Encoding.ASCII.GetByteCount(a.ToString());
            Console.WriteLine(a);
            Console.WriteLine(n);
        }
    }

输出为

T
1
e
1
s
1
t
1

在谷歌上搜索我有很多链接,但没有一个满足我的需要。

我需要在字符串中获取每个字符的ASCII值。???

任何帮助/建议都非常感谢。

5 个答案:

答案 0 :(得分:3)

string可以直接枚举为IEnumerable<char>。每个char都可以转换为整数,以查看其UNICODE“值”(代码点)。 UTF-16将ASCII(0-127)的128个字符映射到UNICODE代码点0-127(例如参见https://en.wikipedia.org/wiki/Code_point),因此您可以直接打印此数字。

string s = "Test";
foreach (char a in s)
{
    if (a > 127)
    {
        throw new Exception(string.Format(@"{0} (code \u{1:X04}) is not ASCII!", a, (int)a));
    }
    Console.WriteLine("{0}: {1}", a, (int)a);
}

答案 1 :(得分:2)

GetByteCount将返回使用的字节数,因此对于每个字符,它将是1个字节。

尝试GetBytes

  static void Main(string[] args)
    {
        string s = "Test";
        var n = ASCIIEncoding.ASCII.GetBytes(s);
        for (int i = 0; i < s.Length; i++)
        {                
            Console.WriteLine($"Char {s[i]} - byte {n[i]}");
        }
    }

答案 2 :(得分:1)

每个字符在ASCII表中表示,其值介于0和127之间。将字符转换为整数,您将能够获得ASCII值。

 static void Main(string[] args)
        {
            string s = "Test";
             for (int i = 0; i < s.Length; i++)
                {
                    //Convert one by one every leter from the string in ASCII value.
                    int value = s[i];
                    Console.WriteLine(value);
                }
        }

答案 3 :(得分:0)

当你应该自己询问字节时,你要求字节数。使用Encoding.ASCII.GetBytes代替Encoding.ASCII.GetByteCount。就像在这个答案:https://stackoverflow.com/a/400777/3129333

答案 4 :(得分:0)

Console.WriteLine(a);   
Console.WriteLine(((int)a).ToString("X"));

你需要转换为int然后转换为十六进制。

GetByteCount将返回使用的字节数,因此对于每个字符,它将为1。

您还可以阅读:Need to convert string/char to ascii values