Locked History Actions

RIDF

RIDF format

サンプルファイル

  • run0336.ridf (2.2MB): BigRIPS/ZDS の Day Three 実験のときの JUNK データ。RIDF ファイルとしては正常なはず。

バイナリファイルを 16 進数で表示

  • Emacs で表示

    • Emacs を用いてバイナリデータを16 進数として表示するには、バイナリデータを開いたら M-x hexl-mode と打つ (Alt 又は Esc を押しながら x を押して、Alt 又は Esc を離し、hexl-mode と入力)。実際にファイルを開くと、下記のようになる。
    • 00000000: 8802 4000 0400 0000 0002 4011 0400 0000  ..@.......@.....
      00000010: ea71 f04c 0100 0000 7275 6e00 0000 0000  .q.L....run.....
      00000020: 0000 0000 0000 0000 0000 0000 0000 0000  ................
      ...
      00000070: 0000 0000 0000 0000 0000 0000 3033 3336  ............0336
      00000080: 0000 0000 0000 0000 0000 0000 0000 0000  ................
      ...
      000000e0: 5354 4152 5420 3d3e 2031 313a 3530 3a31  START => 11:50:1
      000000f0: 3800 0000 5354 4f50 203d 3e20 3131 3a35  8...STOP => 11:5
      00000100: 303a 3332 0000 0000 3237 2d4e 6f76 2d31  0:32....27-Nov-1
      00000110: 3000 0000 0000 0000 0000 0000 0000 0000  0...............
      00000120: 0000 0000 0000 0000 0000 0000 0000 0000  ................
      00000130: 0000 0000 0000 0000 0000 0000 0000 0000  ................
      00000140: 0000 0000 6163 6365 6c2e 2074 756e 652e  ....accel. tune.
      00000150: 2033 374d 6720 2b20 432d 3e20 3337 4d67   37Mg + C-> 37Mg
      00000160: 2c20 6265 616d 2074 7269 6767 6572 2c20  , beam trigger,
      00000170: 636f 6e74 696e 7565 0000 0000 0000 0000  continue........
      00000180: 0000 0000 0000 0000 0000 0000 0000 0000  ................
      00000190: 0000 0000 0000 0000 0000 0000 0000 0000  ................
      000001a0: 0000 0000 0000 0000 6a75 6e6b 0000 0000  ........junk....
      000001b0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
      -UU=:----F1  run0336.ridf   Top L1     (Hexl)----------------------
    • Emacs ではバイナリデータを 1 Byte ごとに 16 進数 2 桁で表示する。(スペースが 2 byte ごとに入っているので、2 byte 単位で表示していると勘違いしそうになるが、データの表示はあくまでも 1 byte ごと。) 一方、ridf ファイルでは、4 byte (= 32 bit) ごとにデータを見た方が都合が良い。例えば、ファイルの最初の 4 byte : 8802 4000 は 00400288 と並べ替えて考える。RIDF のマニュアルを参照すれば、この部分が header であることが分かる。
  •  

  • od コマンドで表示

    • od コマンドを使うと、バイナリデータを見やすく表示できる。例えば以下のように使う。
    • $ od -t x4 -w16 -A x run0336.ridf | head -21
    • 000000 00400288 00000004 11400200 00000004
      000010 4cf071ea 00000001 006e7572 00000000
      000020 00000000 00000000 00000000 00000000
      *
      000070 00000000 00000000 00000000 36333330
      000080 00000000 00000000 00000000 00000000
      *
      0000e0 52415453 3e3d2054 3a313120 313a3035
      0000f0 00000038 504f5453 203e3d20 353a3131
      000100 32333a30 00000000 4e2d3732 312d766f
      000110 00000030 00000000 00000000 00000000
      000120 00000000 00000000 00000000 00000000
      *
      000140 00000000 65636361 74202e6c 2e656e75
      000150 4d373320 202b2067 203e2d43 674d3733
      000160 6562202c 74206d61 67676972 202c7265
      000170 746e6f63 65756e69 00000000 00000000
      000180 00000000 00000000 00000000 00000000
      *
      0001a0 00000000 00000000 6b6e756a 00000000
      0001b0 00000000 00000000 00000000 00000000
    • od コマンドのオプションは次のような意味。
      • -t x4 : 4 byte ごとに 16 進数 (x) で表示
      • -w16 : 1 行に 16 byte 表示
      • -A x : 左側の行数表示を 16 進数 (x) で表示。 -A n にすると、行数を表示しない。
      • -v : 上では指定していないが、このオプションをつけると、途中で省略されなくなる (* が入らなくなる)。
    • 上のコマンドでは、 od コマンドの出力をパイプ (|) で head コマンドに渡している。 head -21 というコマンドは、最初の 21 行だけを表示するという意味。
    • Emacs の hexl-mode に近い表示にするには、1 byte ごとに出力すればよい。ただし、スペースも 1 byte ごとに入るので、Emacs の表示と完全に一緒にすることはできない。
    • $ od -t x1 -w16 -A x run0336.ridf | head -3
    • 000000 88 02 40 00 04 00 00 00 00 02 40 11 04 00 00 00
      000010 ea 71 f0 4c 01 00 00 00 72 75 6e 00 00 00 00 00
      000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    • 2 byte ごとに表示すると、以下のようになる。
    • $ od -t x2 -w16 -A x run0336.ridf | head -3
    • 000000 0288 0040 0004 0000 0200 1140 0004 0000
      000010 71ea 4cf0 0001 0000 7572 006e 0000 0000
      000020 0000 0000 0000 0000 0000 0000 0000 0000
  • od コマンドで途中から表示

    • od コマンドの -j オプションで出力するデータのオフセットを指定できる。このオプションと perl のコマンドを組み合わせれば、block を次々に表示することができる。
    • $ od -t x4 -w16 -A x run0336.ridf | head -3
      000000 00400288 00000004 11400200 00000004
      000010 4cf071ea 00000001 006e7572 00000000
      000020 00000000 00000000 00000000 00000000
      $ od -t x4 -w16 -A x -j`perl -e 'printf("%#x",0x288*2)'` run0336.ridf | head -3
      000510 00400189 00000004 1540017f 00000004
      000520 4cf071eb 0000000b 6261623c 3e646c69
      000530 723c200a 74736e75 73757461 20200a3e
      $ od -t x4 -w16 -A x -j`perl -e 'printf("%#x",0x510+0x189*2)'` run0336.ridf | head -3
      000822 00404ef3 00000004 12000006 00000004
      000832 00000000 12c00048 00000021 4cf069b0
      000842 00000021 00000000 00000000 00000000
      $ od -t x4 -w16 -A x -j`perl -e 'printf("%#x",0x822+0x4ef3*2)'` run0336.ridf | head -3
      00a608 004050aa 00000004 12000006 00000004
      00a618 00000001 118002ff 00000004 0000001a
      00a628 00000000 00000000 2100000a 00000015
      $ od -t x4 -w16 -A x -j`perl -e 'printf("%#x",0xa608+0x50aa*2)'` run0336.ridf | head -3
      01475c 00404e5b 00000004 12000006 00000004
      01476c 00000002 11800301 00000004 00000034
      01477c 00000000 00000000 2100000a 00000015
      $ od -t x4 -w16 -A x -j`perl -e 'printf("%#x",0x1475c+0x4e5b*2)'` run0336.ridf | head -3
      01e412 00405082 00000004 12000006 00000004
      01e422 00000003 1180035b 00000004 0000004d
      01e432 00000000 00000000 2100000a 00000015