読者です 読者をやめる 読者になる 読者になる

yucken の業務上電脳 Tips 日記、なのだよ。-弐式-

いまさら電脳 Tips を書いてみむとして、するなり.元々は広い意味での電脳(コンピュータ)の Tips を書いていたのですが,いつのまにか,解析ツールの「電脳 ruby」の Tips がメインに.‥‥‥で,5 年間放置してたのだけどやはり Tips を書くブログがないと不便なのでふっかちさせたのであります.(・)>

Mac 上でリトル・エンディアンのバイナリデータを読み込む

Mac ruby

をするのに参照したサイト:
Rubyでのビッグエンディアンとリトルエンディアンの相互変換 - エンジニアの低脳っぷりを晒す戦記
UNIXの部屋 コマンド検索:hexdump (*BSD/Linux)
Ruby/バイナリファイルを読む - 俺の基地
Ruby Reference Manual
http://akiyah.bglb.jp/blog/1142

手順としては,

  1. バイナリ形式でファイルを開く.
  2. リトル・エンディアンで「何かの形」で読み込む
  3. 「何かの形」をビッグ・エンディアンに変換する
  4. それを, もう一度, 読みたい形式 (今回の私は、浮動小数点 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