2012-02-02 154 views
17

我有以下代碼:的StringBuilder和字節轉換

StringBuilder data = new StringBuilder(); 
for (int i = 0; i < bytes1; i++) 
{ 
    data.Append("a"); 
} 
byte[] buffer = Encoding.ASCII.GetBytes(data); 

但我得到這個錯誤:

cannot convert from 'System.Text.StringBuilder' to 'char[]' 
The best overloaded method match for 'System.Text.Encoding.GetBytes(char[])' 
has some invalid arguments 

回答

24

以下代碼將解決您的問題。

StringBuilder data = new StringBuilder(); 
for (int i = 0; i < bytes1; i++) 
{ data.Append("a"); } 
byte[] buffer = Encoding.ASCII.GetBytes(data.ToString()); 

的問題是,你傳遞一個StringBuilderGetBytes功能,當你需要從StringBuilder傳遞字符串結果。

3

試試這個:

byte[] buffer = Encoding.ASCII.GetBytes(data.ToString().ToCharArray()); 
+1

無需字符串顯式轉換爲一個數組,GetBytes會()將接受一個字符串。 – roken 2012-02-02 03:48:05

+0

謝謝@roken,你是對的 – 2012-02-02 04:56:36

11

GetBytes會不接受一個StringBuilder作爲參數。使用帶有數據的字符串.ToString()

byte[] buffer = Encoding.ASCII.GetBytes(data.ToString()); 
4

請嘗試此操作。 StringBuilder是對象..從那裏,你必須得到字符串值如下。

byte[] buffer = Encoding.ASCII.GetBytes(data.ToString()); 
2

對於本世紀的文本來說,ASCII不是一個好的編碼選擇。 Web和移動應用程序至少應該使用UTF-8,並且任何其他類型的應用程序也應該在全球化的商業或社交網絡環境中工作。

StringBuilder builder = new StringBuilder(); 
for (int i = 0; i < iLength; ++ i) 
    builder.Append("a"); 
byte[] bytesFromBuilder = Encoding.UTF8.GetBytes(builder.ToString());