C # - Как обработать строку терминатора в преобразовании - PullRequest
1 голос
/ 07 декабря 2009

У меня есть двоичный массив. В процессе преобразования его в строку, из-за некоторых данных моя строка завершается. и он игнорирует следующие данные. Посмотрите на мой код. Есть ли какая-либо ошибка ??

str += (char)chunkData[index].ToString(); 

Позже я хочу отобразить его в текстовом поле. Мой массив содержит следующие данные, отображаемые в шестнадцатеричном редакторе.

 xÚb```e``*bxÚb`
    ¨€ˆY8ÄX¡˜A‰“yuZs˜#µjтЬi@š
    È4„è0

Я пробовал это, но ничего не изменилось .. str = System.Text.Encoding.ASCII.GetString (chunkData);

Ответы [ 3 ]

3 голосов
/ 07 декабря 2009

Вы не должны использовать текст для представления произвольных двоичных данных. Вы почти наверняка потеряете данные, если просто используете Encoding.GetString и Encoding.GetBytes.

Если вы действительно хотите преобразовать произвольные двоичные данные в текст и обратно, используйте Convert.ToBase64String и Convert.FromBase64String.

Что касается завершения '\ 0': строки .NET сами по себе не используют символы завершения, но многие элементы управления пользовательского интерфейса (включая TextBox) будут обрабатывать '\ 0' как символ завершения.

3 голосов
/ 07 декабря 2009

См. Encoding.GetString с кодировкой, соответствующей вашим двоичным данным.

str = System.Text.Encoding.ASCII.GetString(chunkData);
0 голосов
/ 07 декабря 2009

Ваша "ошибка": не используется вызов Encoding.GetString(byte[]) для этого: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...