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

RBS*_*RBS 97 c# encoding ascii

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

如果我的字符串具有值"9quali52ty3",我想要一个具有11个字符中每个字符的ASCII值的数组.

如何在C#中获取ASCII值?

小智 183

来自MSDN

string value = "9quali52ty3";

// Convert the string into a byte[].
byte[] asciiBytes = Encoding.ASCII.GetBytes(value);
Run Code Online (Sandbox Code Playgroud)

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

57 113 117 97 108 105 53 50 116 121 51

  • 注意:“Encoding.ASCII”配置为针对不在 ASCII 字符集中的字符发出替换字符 ('?') 的 ASCII 代码单元。其他选项(包括引发异常)在“Encoding”类中可用。当然,其他字符编码(尤其是 UTF-8)也是可用的;人们应该质疑是否真正需要的是 ASCII。 (2认同)

Lep*_*R64 32

string s = "9quali52ty3";
foreach(char c in s)
{
  Console.WriteLine((int)c);
}
Run Code Online (Sandbox Code Playgroud)

  • 生成的代码是Unicode编号,可能包含非ASCII代码. (11认同)

jas*_*son 21

这应该工作:

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


Lar*_*ens 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
Run Code Online (Sandbox Code Playgroud)


Rau*_*otz 5

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

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