2017-01-10 4 views
0

Я читаю файл HDF5 в Фортране и не знаю названия объекта (группы) a priori. Таким образом, я использую следующий фрагмент кода, чтобы извлечь эту информацию:Максимальная длина имени объекта в формате HDF5?

CALL H5Gn_members_f(group_id, groupName, nlinks, error) 
do ilink = 0, nlinks-1 
    CALL H5Gget_obj_info_idx_f(group_id, groupName, ilink, objName, H5G_GROUP_F, error) 
enddo 

Здесь я определил

character(len=100) :: objName 

с произвольной длиной 100. Тем не менее, у меня нет гарантии, что имя объекта не более 100 символов. Итак, мой фактический вопрос:

Есть ли максимальная длина для имен объектов в HDF5?

+0

@francescalus Не совсем. Мой вопрос заключается не в неопределенном размере строки, хранящейся в наборе данных, а в _name_ набора данных. –

+0

Теперь я разобрал его правильно, спасибо. – francescalus

ответ

1

В документации HDF5 нет конкретного максимума, за исключением максимального размера заголовка (заголовок содержит все метаданные о объекте HDF5).

Предел составляет 64 КБ, см. Вопрос «Существует ли ограничение на заголовок объекта и как это влияет на HDF5?» на https://support.hdfgroup.org/HDF5/faq/limits.html

Это означает, что максимальная длина имени в принципе соответствует примерно этому значению.

Вы можете указать максимальную длину по умолчанию, которая является большой, как вы это сделали, и выполнить некоторую проверку ошибок. Я проверю исходный код HDF5, чтобы узнать, существуют ли определенные ограничения.

EDIT: Функция H5Gget_obj_info_idx_f усекает имя до длины передаваемой символьной переменной. После этого вы можете проверить регулярный запрос имени, чтобы имя было действительным.

EDIT2: Этот список рассылки сообщений на человека, работающего с группой HDF подтверждает это, по состоянию на 2010 https://lists.hdfgroup.org/pipermail/hdf-forum_lists.hdfgroup.org/2010-September/003662.html