Не передавайте двоичные данные как string
. Вместо этого используйте byte[]
, который отделен от любого Stream
, с которого вы, возможно, читали его. Правильно, что StreamReader
предназначен для чтения текста, поэтому вам нужно использовать BinaryReader
или просто Stream.Read()
метод напрямую. Если поток, из которого вы читаете, позволяет искать (выставленный через свойство CanSeek
), вы можете обнаружить его Length
и прочитать все байты из потока за один раз.
Если, однако, поток очень большой или не поддерживает поиск, вам нужно быть немного более сложным при чтении, выполняя его порциями, пока метод Read()
не вернет 0
(что означает конец поток достигнут).
Нет StreamReader.ReadToEnd()
эквивалента для чтения двоичных данных, но определить его как метод расширения не очень сложно.