Есть файлы-архивы от старой игры. Формат следующий:

2 байта — число файлов в архиве, N;

24 байта — [('filename', 'S12'), ('time', '<i4'), ('length', '<i4'), ('offset', '<i4')] повторяется N раз;

остальное — собственно упакованные файлы.


Как это всё поаккуратнее и покороче описать средствами numpy? Знаю, что можно сделать


a = np.memmap('archive.dat', mode='r')
cat_header = np.dtype([('filename','S12'), ('time','<i4'), ('length','<i4'), ('offset','<i4')])
N = a[0:2].view(dtype='<u2')[0]
b = a[2 : 2 + cat_header.itemsize*N].view(cat_header)


и извлекать содержимое i-го файла выражением вида a[b[i]['offset'] : b[i]['offset'] + b[i]['length']]. А ещё удобнее сделать можно?









 ,






URL записи