HDF5DotNet : 文字列の書き込み
2013-02-08


文字列の書き込み方法について
文字列を書き込む方法はちょっと特殊。

基本は前回の"HDF5 : 値の追加"と同じ方法であるが、C#にある"string"型が使用できない。まずは、"string"型を"byte[]"型にして、"byte"型の配列にしてやる。
"string"型を"byte[]"型に変換するには"UTF8Encoding"クラスなどの"GetBytes"メソッドを使用する。
string stringValue = "This is TestString.";
UTF8Encoding
uni = new System.Text.UTF8Encoding( ); Byte[] byteArray = uni.GetBytes( stringValue );
まずはSpaceの作成。ここも少し特殊。書き込みは"byte[]"型であるが、文字列ひとつを一つの型と認識させるので、Spaceの定義は以下のようになる。 
H5DataSpaceId spaceID = H5S.create_simple( 1, new long[] { 1 } );
続いて型の定義。基本通り"H5DataTypeId"を作成するが、上記に書いた通り、文字列を一つの型と認識させる必要がある。型の大きさを指定する場合は"H5T"クラスの"create"メソッドを使用する。
引数は以下のように
 "createClass" : "H5T.CreateClass"列挙型を指定。
 "size" : int型、型の大きさを指定する。
文字列を書き込む場合は"H5T.CreateClass"列挙に"STRING"があるので、それを使用する。sizeは上記で取得したbyte[]の配列長さを指定する。型の定義は以下のようになる。
H5DataTypeId typeID = H5T.create(H5T.CreateClass.STRING,byteArray.Length );
また、前回の型定義方法でも可能。"H5T"クラス"copy"メソッドで使用する型定義は"C_S1"の列挙型を指定する。定義後はサイズ指定をする必要がある。
サイズを指定する場合は、"H5T"クラスの"setSize"メソッドを使用する。引数は以下の通り。
 "typeId" : "H5DataTypeId"クラス、同じ"H5T"クラスのメソッド"copy"メソッドで作成した型情報を渡す。
 "size" : "int型"、型のサイズを指定する。

続きを読む


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


記事を書く
powered by ASAHIネット