2014-01-23 52 views
2

我需要字符串中每個字符的ASCII值。我知道如何將字符串轉換爲字節數組,以便可以遍歷每個字符,但是如何獲取每個字節的ASCII值?如何得到給定char的ASCII碼?

在下面的代碼...

string s = Console.ReadLine(); 
byte[] chars = Encoding.UTF8.GetBytes(s); 
for (int x = 0; x < chars.Length; x++) 
{ 
    Console.Write(chars[x].ToString() + " "); 
} 

我可以肯定地得到每個字符的ASCII值的字符串表示。然後我可以添加轉換功能,它和回家免費...

Console.Write(Convert.ToInt32(chars[x].ToString())); 

但這似乎不必要的羅嗦 - 必須有,將採取每個字節,並給我的ASCII碼數的函數。它是什麼?

+1

'(int)chars [x];' – Tim

+3

或者你甚至可以執行'(int)s [x]'。一個字符串是一個字符數組。 – ShadowCat7

+2

請記住,UTF-8中的單個字符可能需要多個字節才能存儲。只要你只使用[Ascii Table](http://www.asciitable.com/)中的字符,你應該沒問題,但是一旦你的字符串中有一個非英文字符,你就會開始看到陌生人字符出現你的程序。 – Renan

回答

4
Console.Write("{0} ", (int)chars[x]); 

或在社會上被別人說:

string s = Console.ReadLine(); 
for (int x = 0; x < s.Length; x++) 
{ 
    Console.Write("{0} ", (int)s[x]); 
} 
0

選擇可能是寫你想要做什麼的簡單方法:

string s = Console.ReadLine(); 
byte[] chars = Encoding.UTF8.GetBytes(s); 
int[] ascii = chars.Select(ch => (int)ch).ToArray(); 

,如果你想寫int[]值某處可以使用String.Join像這樣:

string asciiString = String.Join(ascii, ", ");