2011年5月25日

[ruby-list:48113] Re: データ整形

渡辺哲也です。

バイナリのようなファイルの表示なのですね。
データに付いて気になるのは、最初から ASCII (テキスト) に
変換されたものなのか? ということです。サンプルのデータは
変換後のものなのでテキストとして扱うことができるようなので
テキストとして処理しますね。Ruby はバイナリのファイルも
扱えます。


あとアドレスとしているものはバイナリのときのものですね。
32文字で改行で 16 バイトアドレスが進んでいますので、
プログラムの中で調整しています。(readsize / 2)

----------
def pr(readsize, n, address)
n.times do
printf "0x%4x %s\n", address, ARGF.read(readsize)
address += (readsize / 2)
end
address
end

address = 0x3000
address = pr(32, 2, address)
address = pr(4, 1, address)
address = pr(14, 43, address)
address = pr(32, 43, address)
----------

私は上記のように書きました。ファイルのオープンなどは
省略したいため引数で渡されたファイル名を扱える ARGF
を利用しています。

気になったのは 1024 バイト(テキストサイズで 2048)の
データなのですが、表示しているのは 2046 文字文だけ
のようです。2 文字分ずれているのですが、出力サンプル
も 2 文字分ずれています。

応用として、テキストファイルに

-----
32 2
4 1
14 43
32 43
-----

などと書いてこれの通りに動くようにすることもできると
思うので、いろいろなパターンのデータがある場合には
調整してみるといいですよ。


投稿者 xml-rpc : 2011年5月25日 23:38
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/103959
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。