.h5 ファイルからデータを読み取る正しい方法は何ですか?
テーブルに格納されるデータにはさまざまな種類があります。このファイルの構造上、データ型は「複合」です。
必要なテーブルを開くには、次を使用します。
struct metadata
{
public Chararray a;
public int b;
public float c;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct Chararray
{
private char* recordedText;
public char* RecordedText
{
get
{
return recordedText;
}
set
{
recordedText = value;
}
}
public override string ToString()
{
string s;
IntPtr ipp = (IntPtr)this.recordedText;
s =System.Runtime.InteropServices.Marshal.PtrToStringAnsi(ipp);
System.Runtime.InteropServices.Marshal.FreeHGlobal(ipp);
return s;
}
}
データを読み取るには
H5DataSetId dsetId = H5D.open(fileID, "/metadata/songs");
ここで、fileID は H5FileId です。
metadata[] s1 = new metadata[1];
H5DataTypeId dt = H5D.getType(dsetId);
H5D.read(dsetId, dt, new H5Array<metadata>(s1));
ただし、出力s1
は正しくありません。