如何在c中读取数据类型未知的hdf5数据集?

时间:2019-03-24 15:39:52

标签: c hdf5

我正在尝试在不知道数据集类型的情况下在c中打开hdf5数据集。我可以使用“ H5Dget_type(dataset_id)”获取数据集类型,但是,当我想为数据数组分配内存时,即“ datatype(int,float等)dset [n]”,在不知不觉中就无法做到数据类型(int,float等)。

所以,我的问题是,如何获取数据类型以便使用它为要使用的数组分配内存?

谢谢!

1 个答案:

答案 0 :(得分:0)

如果您不受特定工具的约束,请签出HDFql,因为这样可以在处理HDF5文件时使您免于低级详细信息的困扰。可以使用C中的HDFql来解决您的问题,如下所示(假设您想读取数据集my_dataset):

// declare variables
void *data;
long long size;

// get size (in bytes) of dataset "my_dataset" and populate HDFql default cursor with it
hdfql_execute("SHOW SIZE my_dataset");

// move HDFql default cursor to first position
hdfql_cursor_first(NULL);

// retrieve size (in bytes) from HDFql default cursor
size = hdfql_cursor_get_bigint(NULL);

// allocate memory based on the size (in bytes) of dataset "my_dataset"
data = malloc(size);

// register variable "data" for subsequent usage
hdfql_variable_register(&data);

// select (i.e. read) data from dataset "my_dataset" and populate variable "data" with it
hdfql_execute("SELECT FROM my_dataset INTO MEMORY 0");

// from this point on, variable "data" contains the data from "my_dataset"