2012-02-02 31 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());