2017-01-10 3 views
0

Ich lese eine HDF5-Datei in Fortran und kenne nicht die Objekt (Gruppen-) Namen a priori. Also, ich bin den folgenden Code-Schnipsel mit, dass Informationen zu extrahieren:Maximale Länge des Objektnamens in 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 

Hier, ich

character(len=100) :: objName 

mit beliebiger Länge von 100. Allerdings definiert habe, habe ich keine Garantie dafür, dass die Objektname ist 100 Zeichen oder weniger. Also, meine eigentliche Frage:

Gibt es eine maximale Länge für Objektnamen in HDF5?

+0

@francescalus Nicht ganz. Meine Frage bezieht sich nicht auf die unsichere Größe eines in einem Dataset gespeicherten Strings, sondern auf _name_ des Datasets selbst. –

+0

Ich parse es jetzt richtig, danke. – francescalus

Antwort

1

In der HDF5-Dokumentation gibt es kein spezifisches Maximum, abgesehen von der maximalen Header-Größe (die Header enthält alle Metadaten zu einem HDF5-Objekt).

Das Limit ist 64kB, siehe die Frage "Gibt es ein Objekt Header Limit und wie wirkt sich das auf HDF5?" um https://support.hdfgroup.org/HDF5/faq/limits.html

Das legt die maximale Namenslänge im Prinzip ungefähr auf diesen Wert.

Sie können eine Standardmaximallänge angeben, die groß ist, wie Sie es getan haben, und eine Fehlerprüfung durchführen. Ich überprüfe den Quellcode von HDF5, um zu sehen, ob es bestimmte Grenzen gibt.

BEARBEITEN: Die Funktion H5Gget_obj_info_idx_f schneidet den Namen auf die Länge der übergebenen Zeichenvariable ab. Sie können anschließend mit der regulären Namensabfrage überprüfen, ob der Name gültig ist.

EDIT2: Diese Mailing-Liste Nachricht von einer Person mit der HDF-Arbeitsgruppe bestätigt dies, ab 2010 https://lists.hdfgroup.org/pipermail/hdf-forum_lists.hdfgroup.org/2010-September/003662.html

Verwandte Themen