Я бы сказал, BinaryReader
- ваш лучший выбор.Из прошлого опыта бывают случаи, когда вам нужно наследовать от BinaryReader.Основной пример - когда вам нужно прочитать строку с нулевым символом в конце, потому что BinaryReader читает строки с префиксом длины.Или вы можете написать свой собственный класс, но в итоге вы обеспечите ту же функциональность, что и BinaryReader.
В конце я бы, вероятно, просто создал свой собственный класс.Таким образом, если вам нужно внести изменения в то, как вы хотите извлечь данные, вы можете просто отредактировать свой класс.Если вы напишите весь проект с помощью BinaryReader и поймете, что вам нужно добавить функциональность, вы будете ввернуты .
public class MyBinaryReader : BinaryReader
{
public MyBinaryReader(byte[] input) : base(new MemoryStream(input))
{
}
public override string ReadString()
{
// read null-terminated string
}
}