2011-02-15 141 views
15

考虑字符串:获得一个字符的ASCII值在C#字符串

string str="A C# string"; 

什么是打印输出使用C#str中每个字符的ASCII值最有效的方式。

+1

定义“最有效”。 :)另外,可能重复的[如何获得C#中的ASCII值的字符串](http://stackoverflow.com/questions/400733/how-to-get-ascii-value-of-string-in-c)。另外,你真的在​​这里指ASCII吗? – bzlm 2011-02-15 11:23:05

+5

那么,从技术上讲,C#字符使用UNICODE,而不是ASCII。 – 2011-02-15 11:24:24

回答

9

这里有一个选择,因为你不喜欢的演员为int:

foreach(byte b in System.Text.Encoding.UTF8.GetBytes(str.ToCharArray())) 
    Console.Write(b.ToString()); 
18

每个字符就转换为int:

for (int i = 0; i < str.length; i++) 
    Console.Write(((int)str[i]).ToString()); 
+1

这不会限制为ASCII,会吗? – bzlm 2011-02-15 11:23:24

+0

+1 - 也可以使用`foreach(char c in str.ToCharArray())迭代` – 2011-02-15 11:26:12

2

这个例子可以帮助你。通过使用简单的转换,你可以获得隐藏在urdu字符后面

string str = "عثمان"; 
     char ch = ' '; 
     int number = 0; 
     for (int i = 0; i < str.Length; i++) 
     { 
      ch = str[i]; 
      number = (int)ch; 
      Console.WriteLine(number); 
     } 
0

这是另一种选择。如果输入的字符不是ascii,它当然会给你一个不好的结果。我没有PERF测试,但我认为这将是非常快:

[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); 
}