From: WATANABE Tetsuya Date: 2011-05-25T23:38:59+09:00 Subject: [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 ----- などと書いてこれの通りに動くようにすることもできると 思うので、いろいろなパターンのデータがある場合には 調整してみるといいですよ。