【发布时间】:2017-10-19 17:11:37
【问题描述】:
我正在使用 Visual Studio (C#) 和 HDF5 P/Invoke。
我制作了一个 HDF5 文件,其中包含具有不同数据类型属性的组和数据集(在这种情况下,假设它是一个整数,保存为 H5T.NATIVE_INT32,但我对其他数据类型也有同样的问题)。现在我正在编写一个代码来从 HDF5 文件中读取数据。要读取属性值,我首先需要确定属性值的数据类型。我尝试了以下方法:
attributeId = H5A.open(groupId, attributeName, H5P.DEFAULT);
hid_t attributeSpace = H5A.get_space(attributeId);
H5S.class_t extentType = H5S.get_simple_extent_type(attributeSpace);
hid_t typeId = H5A.get_type(attributeId);
attributeClass = H5T.get_class(typeId);
type = H5T.get_native_type(typeId, H5T.direction_t.DEFAULT);
H5T.close(typeId);
但是,结果变量 type 与 H5T.NATIVE_INTEGER 类型或我能想到的任何其他 H5T 类型不匹配。事实上,甚至
H5T.get_native_type(H5T.NATIVE_INT,H5T.direction_t.DEFAULT) == H5T.NATIVE_INT
返回false,所以看起来H5T.get_native_type() 没有返回类型,但可能是它的副本或指针,这与类型本身不同。这是预期的行为还是错误?关于如何正确判断属性值类型的任何想法?
【问题讨论】: