NULL в строке не может копировать содержимое после NUL

У меня есть небольшая проблема, когда я получаю данные с внешнего устройства в байтах, а затем преобразовываю их в строку. Я общаюсь с этим устройством через TcpClient.

Я получаю сообщение от этого внешнего устройства и форматирую его как строку. Проблема, которую я получаю, заключается в том, что сообщение, которое я получаю, содержит "NUL". Когда я пытаюсь прочитать его содержимое, строка завершается после того, как в строке встречается NUL. Например:

hello world NUL blah blah blah

Когда я добавляю наблюдателя, я не вижу blah blah blah в переменной, или если я делаю обычную копию и вставляю в окна всю строку (выше), она копирует только до приветствия, мир. Как будто он обрывается или обрывается на строке. Никогда не сталкивался с этим раньше.

Возможно, так я читаю данные byte[]?

ИЗМЕНИТЬ

https://www.dropbox.com/s/mzr1rvmxiyh4yt3/stack.log

Ссылка на файл (надеюсь, это разрешено) и код для чтения:

        StringBuilder str = new StringBuilder();

        using (StreamReader reader = new StreamReader(@"c:\stack.log"))
        {
            str.Append(reader.ReadToEnd());
        }

См. содержимое StringBuilder ничего не знает после символа NUL.

Заранее спасибо, Онам.

Надеюсь, что подробностей достаточно, если нет, я добавлю больше, если потребуется.


person Dr Schizo    schedule 29.07.2013    source источник
comment
Вероятно, потому что вы обрабатываете его как строку с нулевым завершением.   -  person Belogix    schedule 29.07.2013
comment
Прикрепил ссылку на файл, содержащий NUL и код для его чтения. Вы можете визуализировать то, что происходит по существу.   -  person Dr Schizo    schedule 29.07.2013


Ответы (1)


Найдите и замените \0 пустой строкой или пробелом.

person bhs    schedule 29.07.2013
comment
Ожидание SO, чтобы позволить мне принять это как ответ. Не знала, что это так просто! - person Dr Schizo; 29.07.2013