【发布时间】:2014-06-11 07:28:07
【问题描述】:
我正在尝试将 C# 中的 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));
我尝试对字符串数据集执行相同的操作,但我将所有值初始化为 null。所以我提到了这个链接(https://www.mail-archive.com/hdf-forum@hdfgroup.org/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()的输出应该如example 中所示工作?