Есть файлы-архивы от старой игры. Формат следующий:
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']]
. А ещё удобнее сделать можно?