Чтение бинарного файла по заголовкам - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Файл начинается так 00 00 00 00 FF FF 95 05 34 E8 02 00 CD 67 5A 41 первые 4 байта это номер записи потом 2 байта - номер файла, 4 байта заголовок записи с этого момента начинается перечисление параметров, 2 байта заголовок параметра идёт перед каждым параметром и 4 байта сам параметр CD 67 5A 41 представлен в Float. Этот параметр повторяется в каждой записи, таких записей может быть сто тысяч то есть 02 00 будет повторяться 100000 раз, сам параметр может меняться. Вопрос как мне по заголовку параметров получить все эти параметры скажем в массив Float[]? Если не тяжело то с примеров кода

Решение задачи: «Чтение бинарного файла по заголовкам»

textual
Листинг программы
byte[] buffer = new byte[] { 
0x00, 0x00, 0x00, 0x00, 
0xFF, 0xFF, 
0x95, 0x05, 0x34, 0xE8, 
0x02, 0x00, 
0xCD, 0x67, 0x5A, 0x41 };
        
        private void ParseBuffer(object sender, EventArgs e)
        {
            //если количество параметров странное
            if ((buffer.Length - 10) % 6 != 0) 
                return;
 
            int recordNumber = BitConverter.ToInt32(buffer, 0);
            short fileNumber = BitConverter.ToInt16(buffer, 4);
            int recordHeader = BitConverter.ToInt32(buffer, 6);
 
            int correte = 10;
            
            //это если заголовок уникальный. если нет нужно использовать два списка
            //List<short> headers;
            //List<float> values;
            Dictionary<short, float> values = new Dictionary<short, float>();
            while (correte < buffer.Length)
            {
                values.Add(
                        BitConverter.ToInt16(buffer, correte),        //заголовок
                        BitConverter.ToSingle(buffer, correte + 2));//значение
                correte+=6;
            }
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.286 из 5