1

.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は正しくありません。

4

0 に答える 0