StringBuilder和字节转换

时间:2012-02-02 03:41:09

标签: c# encoding byte 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

5 个答案:

答案 0 :(得分:32)

以下代码将解决您的问题。

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

问题是,当您需要从StringBuilder传递字符串结果时,您正在将GetBytes传递给StringBuilder函数。

答案 1 :(得分:12)

GetBytes不接受StringBuilder作为参数。使用带有data.ToString()

的字符串
byte[] buffer = Encoding.ASCII.GetBytes(data.ToString()); 

答案 2 :(得分:4)

请试试这个。 StringBuilder是对象..从那里,你必须得到如下的字符串值。

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

答案 3 :(得分:3)

试试这个:

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

答案 4 :(得分:3)

本世纪的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());