У меня есть байтовый массив в качестве ввода.Это должно быть двоичное представление стандарта, соответствующего HTML UTF8.Да, но в большинстве случаев только.Иногда он также содержит встроенные нули (\x0
символ или NUL
).Это не под моим контролем.Мне нужно преобразовать этот байтовый массив в строку.
Пробовал до сих пор:
- Очевидно, использование
StreamReader
или TextReader
не работает, так как останавливается при нажатии на первуюNUL
Encoding.UTF8.GetString
тоже не работает - также останавливается на первом NUL
Что сработало, но довольно нелегко:
mynewarray = myoldarray.Where( x => x!=0).ToArray();
var output = Encoding.UTF8.GetString(mynewarray);
Есть ли более элегантный способ сделать это исключительным при создании нового байтового массива, пропуская символы NUL
, а затем использовать одно из приведенных выше решений?Массив байтов может быть довольно большим, более 2-4 Мб ... MSDN сообщает, что строки могут содержать встроенные NUL
, но не сообщает, как лучше всего обрабатывать такие строки.