c # — распаковать данные Zlib

В настоящее время я пытаюсь распаковать некоторые байты из файла .mat, сжатого Zlib,
Я читаю пункт 3, стр. 1-12 из Формат MAT-файла, он сказал, что байты в .mat файл сжат Zlib,

Итак, мой вопрос: есть ли в C # некоторые API или библиотеки, которые могут распаковывать байты.
Если бы я получил группу байтов, таких как

6236 20e6 0062 1606 0860 85f2 1981 980b
4cb3 30e4 25e6 a60a 40f9 2545 9989 39f1

Затем я загружаю их в массив SByte, как я могу их распаковать?

Я также проверил некоторые библиотеки в Интернете. Кажется, что они могут сделать, чтобы распаковать весь файл, а не некоторые байты ….

Я новичок в этом отношении. Любая помощь приветствуется.

0

Решение

Ты можешь использовать InflaterInputStream от SharpZipLib. .mat Файл имеет заголовок длиной 0x88, поэтому его нужно пропустить. Я взял образец файла отсюда SampleMatlabMatDataFiles.zip.

byte[] data = File.ReadAllBytes("c.mat").Skip(0x88).ToArray();
byte[] decompressedData = new byte[10000];
int decompressedLength = 0;
using (MemoryStream memory = new MemoryStream(data))
using (InflaterInputStream inflater = new InflaterInputStream(memory))
decompressedLength = inflater.Read(decompressedData, 0, decompressedData.Length);
1

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector