Пропуск байтов во время чтения потока - PullRequest
0 голосов
/ 01 октября 2018

Интересно, можно ли было пропустить байты во время потокового чтения двоичного файла?Я пытаюсь прочитать 32 байта, затем пропустить следующие 6 байтов полностью и повторить весь путь до конца файла.Размер файла составляет около 10 МБ.Вот соответствующий код, который у меня есть сейчас, где я получаю ошибку выхода за границы.

            byte[] tempBuff = new byte[FlashSize];
            int numBytesToRead = FlashSize;
            int bytesRead = 0;

            while(bytesRead <= numBytesToRead - 38{
                    ecmStream.Read(tempBuff, 0, 32);
                    ecmStream.Seek(6, SeekOrigin.Current);

            }

edit:

Благодаря Хенку я также понял, что мне нужно пропустить 14 байтов после того, как я читаю каждые 10000. Разбор на лету с потоком все еще является хорошим вариантом в этомуказать?

Ответы [ 2 ]

0 голосов
/ 02 октября 2018
int numBytesToRead = FlashSize;
byte[] tempBuff = new byte[numBytesToRead];
int bytesRead = 0;

while(bytesRead <= numBytesToRead - 38)
{
    bytesRead += ecmStream.Read(tempBuff, bytesRead, 32);
    ecmStream.Seek(6, SeekOrigin.Current);                    
}
0 голосов
/ 01 октября 2018

ваше первое чтение неверно

ecmStream.Read(tempBuff, 32, FlashSize);

должно быть

ecmStream.Read(tempBuff, 0, FlashSize);

В этом первом int указывается, какое смещение в tempBuff нужно прочитать в https://docs.microsoft.com/en-us/dotnet/api/system.io.stream.read?view=netframework-4.7.2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...