如何在C#中获取字符串的ASCII值

时间:2008-12-30 16:25:01

标签: c# encoding ascii

我想在C#中的字符串中获取字符的ASCII值。

如果我的字符串的值为“9quali52ty3”,我想要一个包含11个字符中每个字符的ASCII值的数组。

如何在C#中获取ASCII值?

15 个答案:

答案 0 :(得分:177)

来自MSDN

string value = "9quali52ty3";

// Convert the string into a byte[].
byte[] asciiBytes = Encoding.ASCII.GetBytes(value);

您现在拥有字节ASCII值的数组。我得到了以下内容:

57 113 117 97 108 105 53 50 116 121 51

答案 1 :(得分:30)

string s = "9quali52ty3";
foreach(char c in s)
{
  Console.WriteLine((int)c);
}

答案 2 :(得分:21)

这应该有效:

string s = "9quali52ty3";
byte[] ASCIIValues = Encoding.ASCII.GetBytes(s);
foreach(byte b in ASCIIValues) {
    Console.WriteLine(b);
}

答案 3 :(得分:6)

你的意思是你只想要字母字符而不是数字吗?那么你想要“质量”吗?您可以使用Char.IsLetter或Char.IsDigit逐个过滤它们。

string s = "9quali52ty3";
StringBuilder result = new StringBuilder();
foreach(char c in s)
{
  if (Char.IsLetter(c))  
    result.Add(c);
}
Console.WriteLine(result);  // quality

答案 4 :(得分:3)

byte[] asciiBytes = Encoding.ASCII.GetBytes("Y");
foreach (byte b in asciiBytes)
{
    MessageBox.Show("" + b);
}

答案 5 :(得分:3)

string value = "mahesh";

// Convert the string into a byte[].
byte[] asciiBytes = Encoding.ASCII.GetBytes(value);

for (int i = 0; i < value.Length; i++)


    {
        Console.WriteLine(value.Substring(i, 1) + " as ASCII value of: " + asciiBytes[i]);
    }

答案 6 :(得分:3)

该程序将接受多个字符并输出其ASCII值:

using System;
class ASCII
{
    public static void Main(string [] args)
    {
        string s;
        Console.WriteLine(" Enter your sentence: ");
        s = Console.ReadLine();
        foreach (char c in s)
        {
            Console.WriteLine((int)c);
        }
    }
}

答案 7 :(得分:2)

string text = "ABCD";
for (int i = 0; i < text.Length; i++)
{
  Console.WriteLine(text[i] + " => " + Char.ConvertToUtf32(text, i));
}

如果我没记错的话,ASCII值是Unicode数字的低7位数。

答案 8 :(得分:2)

如果你想要字符串中每个字符的字符代码,你可以这样做:

char[] chars = "9quali52ty3".ToCharArray();

答案 9 :(得分:2)

早些时候的回应者已经回答了这个问题,但没有提供标题让我期待的信息。我有一个方法返回一个字符串但是 我想要一个可以转换为十六进制的字符。以下代码演示了我认为我会发现的内容,希望它对其他人有所帮助。

  string s = "\ta£\x0394\x221A";   // tab; lower case a; pound sign; Greek delta;
                                   // square root  
  Debug.Print(s);
  char c = s[0];
  int i = (int)c;
  string x = i.ToString("X");
  c = s[1];
  i = (int)c;
  x = i.ToString("X");
  Debug.Print(c.ToString() + " " + i.ToString() + " " + x);
  c = s[2];
  i = (int)c;
  x = i.ToString("X");
  Debug.Print(c.ToString() + " " + i.ToString() + " " + x);
  c = s[3];
  i = (int)c;
  x = i.ToString("X");
  Debug.Print(c.ToString() + " " + i.ToString() + " " + x);
  c = s[4];
  i = (int)c;
  x = i.ToString("X");
  Debug.Print(c.ToString() + " " + i.ToString() + " " + x);

以上代码将以下内容输出到即时窗口:

a£Δ√

a 97 61

£163 A3

Δ916394

√8730221A

答案 10 :(得分:2)

您可以使用

删除BOM
//Create a character to compare BOM
char byteOrderMark = (char)65279;
if (sourceString.ToCharArray()[0].Equals(byteOrderMark))
{
    targetString = sourceString.Remove(0, 1);
}

答案 11 :(得分:1)

或者在LINQ中:

string value = "9quali52ty3";

var ascii_values = value.Select(x => (int)x);

var as_hex = value.Select(x => ((int)x).ToString("X02"));

答案 12 :(得分:0)

我想在C#中的字符串中获取字符的ASCII值。

每个人都在这个结构中给出答案。 如果我的字符串的值为“9quali52ty3”,我想要一个包含11个字符中每个字符的ASCII值的数组。

但是在控制台我们工作坦诚,所以我们得到一个字符并打印ASCII代码如果我错了所以请更正我的答案。

 static void Main(string[] args)
        {
            Console.WriteLine(Console.Read());
            Convert.ToInt16(Console.Read());
            Console.ReadKey();
        }

答案 13 :(得分:0)

为什么不采用老式的简便方法?

    public int[] ToASCII(string s)
    {
        char c;
        int[] cByte = new int[s.Length];   / the ASCII string
        for (int i = 0; i < s.Length; i++)
        {
            c = s[i];                        // get a character from the string s
            cByte[i] = Convert.ToInt16(c);   // and convert it to ASCII
        }
        return cByte;
    }

答案 14 :(得分:-1)

    string nomFile = "9quali52ty3";  

     byte[] nomBytes = Encoding.ASCII.GetBytes(nomFile);
     string name = "";
     foreach (byte he in nomBytes)
     {
         name += he.ToString("X02");
     }
`
     Console.WriteLine(name);

//现在更好了;)