2011-02-15 62 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); 
}