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

我想得到 C # 中字符串中字符的 ASCII 值。

如果我的字符串的值是“9qual52ty3”,那么我需要一个包含11个字符中每个字符的 ASCII 值的数组。

如何在 C # 中获得 ASCII 值?

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

这应该会奏效:

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

你的意思是你只想要字母而不是数字吗?所以你想要“质量”作为结果?您可以使用 Char.IsLetters 或 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
string text = "ABCD";
for (int i = 0; i < text.Length; i++)
{
Console.WriteLine(text[i] + " => " + Char.ConvertToUtf32(text, i));
}

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

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

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

来自 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

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

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

  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£Δ√

9761

163A3

Δ916394

√8730221A

或者在 LINQ 中:

string value = "9quali52ty3";
var ascii_values = value.Select(x => (int)x);
var as_hex = value.Select(x => ((int)x).ToString("X02"));
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]);
}

你可以使用以下方法移除 BOM:

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

这个程序将接受多个字符并输出它们的 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);
}
}
}

我想得到 C # 中字符串中字符的 ASCII 值。

在这个结构中,每个人都会给出答案。 如果我的字符串的值是“9qual52ty3”,那么我需要一个包含11个字符中每个字符的 ASCII 值的数组。

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

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

为什么不用传统的简单方法呢?

    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;
}
    string nomFile = "9quali52ty3";


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

//现在好多了;)