Я пытаюсь прочитать набор строковых данных из файла HDF5 на С# в массив строк. Я смог прочитать набор данных, используя следующий код:
//read the no of rows and columns
var datasetID = H5D.open(fileId,"dimensions");
var dataTypeId = H5D.getType(datasetID);
var dataType = H5T.getClass(dataTypeId);
var length = H5T.getSize(dataTypeId);
int[] dDim = new int[length];
H5D.read(datasetID, dataTypeId, new H5Array<int>(dDim));
Я попытался сделать то же самое для набора строковых данных, но все значения были инициализированы нулевым значением. Поэтому я сослался на эту ссылку (https://www.mail-archive.com/[email protected]/msg02980.html). Я смог прочитать их как байты, но я не знаю, до какого размера должен быть инициализирован массив байтов. Код, который у меня есть сейчас для чтения строки, таков:
//read string
datasetID = H5D.open(fileId, "names");
var dataSpaceId = H5D.getSpace(datasetID);
long[] dims = H5S.getSimpleExtentDims(dataSpaceId);
dataTypeId = H5T.copy(H5T.H5Type.C_S1);
//hard coding the no of string to read (213)
byte[] buffer = new byte[dims[0]*213];
Console.WriteLine(dims[0]);
H5D.read(datasetID, dataTypeId, new H5Array<byte>(buffer));
Console.WriteLine(System.Text.ASCIIEncoding.ASCII.GetString(buffer)); `.
H5T.getSize()
должен работать, как показано в пример? - person Timothy Brown   schedule 25.04.2014