HDF5DotNet : 文字列の読み込み
2013-02-13


HDF5ファイルから文字列データの読み込み方法

文字列の読み込みについても、数値の読み込みと同様の手順を踏めば取り込むことができる。少し違うのが、取得する文字列のサイズを知らなければならない。

まずは、数値の読み込みと同様に、"H5FileId"クラス、もしくは"H5GroupId"と、DataSetの名前を使用して、"H5DataSetId"クラスを取り出す。
その後、取り出した"H5DataSetId"クラスより、"H5DataTypeId"クラスを得る。
H5DataSetId dataSetID = H5D.open( fileID,"TestStringDataSet" );
H5DataTypeId dataTypeID = H5D.getType( dataSetID );
次に文字列データのサイズを取得する。
以前に、文字列データの書き込みについて記述したように、書き込み時は文字列を"byte"型の配列に変換して保存した。なので、読み込み時も"byte"型の配列を得てから変換を行う必要がある。
まずは、"byte"型配列の大きさを取得する。取得するには、"H5T"クラスにあるメソッド"getSize"を使用する。引数は"H5DataTypeId"、戻り値は"int"型。
byte[] byteArray = new byte[ H5T.getSize(dataTypeID)];
あとは値型の時と同じように"H5D"クラスの"read<>"メソッドでデータを読み込むジェネリックには"byte"型を指定する。
H5Array<byte> array = newH5Array<byte>( byteArray );
H5D.read<byte>( dataSetID , dataTypeID , array );
これでbyteArrayのインスタンスに文字列データが格納されているので、"System.Text.Encoding"クラスにある"GetString"メソッドでデータを変換してやる。使用するエンコーディングは、保存時と同じものを使用する。
string testString = Syste.Text.Encoding.UTF8.GetString(byteArray);
これで文字列の取得は完了。あとはおなじみの"close"メソッドを使用する。
以下、サンプル
H5FileId fileID = H5F.open( "C:\\HDFSampleFile.hdf5", H5F.OpenMode.ACC_RDWR );
H5DataSetId dataSetID = H5D.open( fileID,"TestDataSet" );
H5DataTypeId dataTypeId = H5D.getType( dataSetID );
byte[] byteArray = new byte

続きを読む


コメント(全50件)
※コメントの受付件数を超えているため、この記事にコメントすることができません。


記事を書く
powered by ASAHIネット