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 ответов


следующий код исправит вашу проблему.

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

проблема в том, что вы проходите StringBuilder до GetBytes функция, когда вам нужно передать результат строки из StringBuilder.


GetBytes не принимает StringBuilder в качестве параметра. Используйте строку с данными.ToString ()

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

пожалуйста, попробуйте это. То StringBuilder объекта.. оттуда вы должны получить строковое значение следующим образом.

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

попробуйте это:

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

ASCII не является хорошим выбором кодировки для текста в этом веке. Веб-и мобильные приложения должны, по крайней мере, использовать UTF-8, а также любой другой тип приложений, который должен работать в глобализованной бизнес-среде или социальной сети.

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