2010-03-18 32 views
3

我有以下功能:內置函數從字符串轉換爲字節

public static byte[] StringToByte(string str) 
{ 
    int length = str.Length; 
    byte[] ba = new byte[length]; 
    for (int i = 0; i < length; i++) 
    {   
     ba[i] = (byte)str[i]; 
    } 
    return ba; 
} 

我不知道是否有這個方法的內置函數?

回答

6
System.Text.ASCIIEncoding encoding=new System.Text.ASCIIEncoding(); 
byte[] bytes= encoding.GetBytes(stringData); 
9
System.Text.Encoding.GetBytes(string) 
2

要確切,並用一個例子:

public static byte[] StrToByteArray(string str) { 
    System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding(); 
    return encoding.GetBytes(str); 
} 

替換ASCIIEncoding你想使用的編碼。

4

不起作用。真的 - 你rappraoch壞了。你假設低字節是你需要的字節。你試圖達到?字符串的ASCII表示?什麼代碼頁?

檢查以下頁面:

http://msdn.microsoft.com/en-us/library/system.text.encoding.aspx

有提到的類,可能是ASCIIEncoding類的用途之一。

.NET Framework提供的編碼類的以下實施方式中,以支持當前Unicode編碼和其他編碼:

.NET Framework提供的編碼類的以下實施方式中,以支持當前Unicode編碼和其他編碼:

  • ASCIIEncoding將Unicode字符編碼爲單個7位ASCII字符。此編碼僅支持U + 0000和U + 007F之間的字符值。代碼頁20127.也可通過ASCII屬性獲得。
  • UTF7Encoding使用UTF-7編碼對Unicode字符進行編碼。此編碼支持所有Unicode字符值。代碼頁65000.也可通過UTF7屬性獲得。
  • UTF8Encoding使用UTF-8編碼對Unicode字符進行編碼。此編碼支持所有Unicode字符值。代碼頁65001.也可以通過UTF8屬性獲得。
  • UnicodeEncoding使用UTF-16編碼對Unicode字符進行編碼。支持little endian(代碼頁1200)和big endian(代碼頁1201)字節順序。通過Unicode屬性和BigEndianUnicode屬性也可用。
  • UTF32Encoding使用UTF-32編碼對Unicode字符進行編碼。支持little endian(代碼頁12000)和big endian(代碼頁12001)字節順序。也可通過UTF32屬性獲得.ASCIIEncoding將Unicode字符編碼爲單個7位ASCII字符。此編碼僅支持U + 0000和U + 007F之間的字符值。代碼頁20127.也可通過ASCII屬性獲得。
  • UTF7Encoding使用UTF-7編碼對Unicode字符進行編碼。此編碼支持所有Unicode字符值。代碼頁65000.也可通過UTF7屬性獲得。
  • UTF8Encoding使用UTF-8編碼對Unicode字符進行編碼。此編碼支持所有Unicode字符值。代碼頁65001.也可以通過UTF8屬性獲得。
  • UnicodeEncoding使用UTF-16編碼對Unicode字符進行編碼。支持little endian(代碼頁1200)和big endian(代碼頁1201)字節順序。通過Unicode屬性和BigEndianUnicode屬性也可用。
  • UTF32Encoding使用UTF-32編碼對Unicode字符進行編碼。支持little endian(代碼頁12000)和big endian(代碼頁12001)字節順序。也可以通過UTF32屬性獲得。
+0

你指的是哪個答案? – Graviton 2010-03-18 08:46:29

0
string s = "Like this"; 
System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding(); 
byte[] b = enc.GetBytes(s);