Mac 上でリトル・エンディアンのバイナリデータを読み込む
をするのに参照したサイト:
Rubyでのビッグエンディアンとリトルエンディアンの相互変換 - エンジニアの低脳っぷりを晒す戦記
UNIXの部屋 コマンド検索:hexdump (*BSD/Linux)
Ruby/バイナリファイルを読む - 俺の基地
Ruby Reference Manual
http://akiyah.bglb.jp/blog/1142
手順としては,
- バイナリ形式でファイルを開く.
- リトル・エンディアンで「何かの形」で読み込む
- 「何かの形」をビッグ・エンディアンに変換する
- それを, もう一度, 読みたい形式 (今回の私は、浮動小数点 4 Byte) で読み込む
コードはこんな感じで書いてみました:
# read_litbin.rb file = File.open( 'love_hayate.bin', 'r+b' ) # オプション 'r+b' は、"binary 形式で読む" x = file.read( 4 ) # レコードサイズは 4 Byte x = x.unpack( 'N*' ) x = x.pack( 'V*' ) # little -> big endian transfer (詳細は不明) x1 = x.unpack( 'f' ) # 今回は 浮動小数点型だったので 'f'. 整数とかなら 'i' string = x1[ 0 ] puts string file.close