StringBuilder и преобразование байтов - PullRequest
22 голосов
/ 02 февраля 2012

У меня есть следующий код:

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 ]

32 голосов
/ 02 февраля 2012

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

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

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

12 голосов
/ 02 февраля 2012

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

byte[] buffer = Encoding.ASCII.GetBytes(data.ToString()); 
4 голосов
/ 02 февраля 2012

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

byte[] buffer = Encoding.ASCII.GetBytes(data.ToString());
3 голосов
/ 17 апреля 2017

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

StringBuilder builder = new StringBuilder();
for (int i = 0; i < iLength; ++ i)
    builder.Append("a");
byte[] bytesFromBuilder = Encoding.UTF8.GetBytes(builder.ToString());
3 голосов
/ 02 февраля 2012

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

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