考虑以下字符串:
string str="A C# string";
使用C#打印str中每个字符的ASCII值最有效的方法是什么?
将每个字符强制转换为int:
for (int i = 0; i < str.length; i++)
Console.Write(((int)str[i]).ToString());
foreach(char c in str.ToCharArray())
进行迭代。 - Joel Ethertonforeach (char c in str)
进行迭代。甚至不需要用 ToCharArray
。 - LukeH如果您不喜欢将值转换为int,这里有另一种选择:
foreach(byte b in System.Text.Encoding.UTF8.GetBytes(str.ToCharArray()))
Console.Write(b.ToString());
ConvertToUTF32()
,因为这才是字符本身的真正编码。 - Joel Etherton这个例子可能会帮到您。通过简单的转换,您可以获得乌尔都字符的代码。
string str = "عثمان";
char ch = ' ';
int number = 0;
for (int i = 0; i < str.Length; i++)
{
ch = str[i];
number = (int)ch;
Console.WriteLine(number);
}
string
是一个计数的 UTF-16 代码单元序列(其中一个或两个编码 Unicode 代码点),所以这将获取 UTF-16 代码单元。代码点更加符合人类阅读习惯。要获取它们,请转换为 UTF-32,因为 UTF-32 代码单元和 Unicode 代码点是一对一的,并且具有相同的值。 - Tom Blodget这里有另一种选择。当然,如果输入字符不是ASCII码,它会给你一个错误的结果。我没有进行性能测试,但我认为它应该非常快:
[MethodImpl(MethodImplOptions.AggressiveInlining)]
private static int GetAsciiVal(string s, int index) {
return GetAsciiVal(s[index]);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
private static int GetAsciiVal(char c) {
return unchecked(c & 0xFF);
}