Я чувствую твою боль. Я имел дело с огромным количеством данных, хранящихся в файлах в формате HDF5, и собрал несколько битов информации, которые могут оказаться полезными.
Если вы «контролируете» создание файлов (и запись данных - даже если вы используете API), вы сможете полностью обойти библиотеки HDF5.
Если выходные наборы данных не разделены на части, они будут записаны непрерывно. Пока вы не определяете какое-либо преобразование порядка байтов в своих определениях типов данных (т.е. вы указываете, что данные должны быть записаны в собственном формате с плавающей запятой / двойным / целым числом), вы должны быть в состоянии достичь «двоичной совместимости», как вы указали это.
Чтобы решить мою проблему, я написал анализатор файлов HDF5, используя спецификацию файла http://www.hdfgroup.org/HDF5/doc/H5.format.html
С помощью довольно простого парсера вы сможете определить смещение (и размер) любого набора данных. На этом этапе просто fseek и fread (в C, то есть, возможно, есть подход более высокого уровня, который вы можете использовать в C ++).
Если ваши наборы данных разбиты на фрагменты, то для анализа b-деревьев, используемых для организации порций, требуется больше разбора.
Единственная другая проблема, о которой вам следует знать, - это обработка (или устранение) любого системно-зависимого заполнения структуры.