2009年04月15日

読んだら・・・書いてみよう

暖かくなってきてます。春を感じる日々になってきています。
そして、花粉も元気です・・・・・もうやだ〜(悲しい顔)
こんにちは、ハラです。

過去3回にわたり、Ruby言語でいろいろなデータを読んできましたが、
実際にC/C++言語のプログラムで読み込むバイナリデータとして
書き出していませんでした。
今回は、書き出しを行ってみたいと思いますメモ

まずはサクッとスクリプトを書いてみましたレストラン
内容は、固定長の数値データをバイナリとして書き出しています。

# テキストファイルから読み込んだという仮定のデータ
dataArray = Array.new
dataArray.push([1, 2, 3, 4, 5, 6])
dataArray.push([7, 8, 9, 10, 11, 12])

# バイナリモードでファイルを開く
dataFile = File.open("data.bin", "wb")

# 書き込み
dataArray.each do | data |
# 個々の数値を符号なし32bitで出力
dataFile.write data.pack("L*")
end

# ファイルを閉じる
dataFile.close

書き出した結果をバイナリエディタで見ると下の通りになります。
読み込んだ数値が32Bitでちゃんと出力されてますねfax to

01000000 02000000 03000000 04000000
05000000 06000000 07000000 08000000
09000000 0A000000 0B000000 0C000000

ちなみに、符号のありなしや出力する際のビット数、
エンディアンは指定できますひらめき

後は、データを読む側のC/C++のプログラムを
書けば使うことが出来ますねグッド(上向き矢印)


実際のデータはここまでシンプルではないかもしれませんが、
データ作成に必要な要素は上のスクリプトや今までの日記に含まれています。
必要とされるフォーマットにあわせて読み込むファイルや
書き出し方を変えればOKです。

コメント文でも書いてますが、バイナリモードで開くことをお忘れなく。
テキストモードだとキャリッジリターンが含まれるので、
データサイズがずれてしまいます。
もちろんexclamation×2 私は間違えて、小一時間悩んだことがありますがく〜(落胆した顔)

短いコードと言えども油断せず、その恩恵に与りたいですねわーい(嬉しい顔)

posted by 管理人 at 11:39 | Comment(0) | プログラミング
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。