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

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

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

hello world NUL blah blah blah

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

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

РЕДАКТИРОВАТЬ

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.

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

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

1 ответ

Решение

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

Другие вопросы по тегам