以下是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值。???
任何帮助/建议都非常感谢。
答案 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。