• 締切済み

ファイル読込みでの質問です

はじめまして。できればRUBY言語もしくはCでの構造体へのアクセスについて教えてください。 今回やりたいのは、ddsファイルのARGBの情報を取得し、表示したいです。 フォーマットやヘッダ情報はググッたらあったのでわかるのですが、RUBY初心者なので肝心の記述かわかりません。 strctrで構造体書いて、アクセスしてどうにかすればいいと思うんですが。 記述がわからず悩んでおります。構造体へのアクセス方法だけで結構ですので。 あつかましいとは思いますが、お助けください。 http://www.mapee.jp/wlh/dds32argb.html http://dench.flatlib.jp/ddsformatmemo.html

みんなの回答

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.1

ARGBのフォーマットについては、提示された参考サイトをみると 4バイトのバイナリ-データで、1バイト毎のデータがA、R、G、Bの順に並んでいると理解しました。 各1バイトのデータは、符号無し整数で0~255の値をとることになります。 以上の前提で話を進めます。 4バイトのデータがstring型の変数名dataに格納されており、それをA,R,G,Bに分割して取り出す場合は、以下のようになります。 argb = data.unpack("CCCC") argv[0]にAが格納されます argv[1]にRが格納されます argv[2]にGが格納されます argv[3]にBが格納されます 以下サンプルソース ====================== data = [123,255,3,2].pack("CCCC") argb = data.unpack("CCCC") p argb ======================= 実行結果 [123, 255, 3, 2] 基本的にunpackでバイナリデータをrubyが扱える形式の変数に展開します。 packでrubyの変数をバイナリデータに変換します。 pack,unpack及びテンプレート(今回の例では"CCCC"の部分) に関して十分にマニュアルを読んで理解してから作業を行なってください。

関連するQ&A