如何读取字符串数据集产生的HDF5字节数组

时间:2015-03-31 12:36:10

标签: vb.net bytearray hdf5

我在VB.net中使用 HDF5DotNet 库。我需要读取一个字符串数据集(3000个项目,每个项目len = 16)。 我使用字节数组来存储所有值但是它不容易解析:我需要逐行获取字符串而不是字符串的一部分。 您是否知道存储和解析结果的更好方法?

这是我的代码:

'Load the file
Dim HDF5TestFileID As HDF5DotNet.H5FileId
HDF5TestFileID = H5F.open("C:\test.hdf5", H5F.OpenMode.ACC_RDONLY)

'Get datset and group id
Dim GroupRootId As HDF5DotNet.H5GroupId = H5G.open(HDF5TestFileID, "/")
Dim dataSetRN As H5DataSetId = H5D.open(GroupRootId, "MyItemsNames")

'Build byte array from the dataset
Dim readDataBackRN(16 * 3000) As Byte
Dim h5DataBackRN As New H5Array(Of Byte)(readDataBackRN)
Dim typeIdRN As H5DataTypeId = H5D.GetType(dataSetRN)
H5D.read(dataSetRN, typeIdRN, h5DataBackRN)

'try to parse the result but not easy to use data
Dim content as string = System.Text.Encoding.UTF8.GetString(readDataBackRN).Replace(" ", "<br>")

2 个答案:

答案 0 :(得分:0)

您通常会读取缓冲区,检查字符串是否完整,如果没有继续读取并将新内容附加到上一个片段,并继续这样做,直到找到行尾。

你能这样做吗?

答案 1 :(得分:0)

在这种情况下,字符串已完成,但有一天我可能达到了大小限制。我无法修改H5D.read方法。我想知道一个简单的字节数组是最好的方法吗? 更好的方法是将结果存储在一个字节数组(每行字符串1个字节数组)中,而不是将所有项存储在单个字节数组中? 但是,如果可能的话,我不会知道。