バイナリファイルに書いてある16進のデータをテキストファイルにそのまま変換するrubyファイルを作成した。
rubyプログラミングのサンプルソースコードを以下に示す。
テキストエディタ バイナリエディタ
text(.txt) binary(.dat)
0A 24 9C <- 0A 24 9C
例
----------入力
testdata.dat
----------バイナリデータに16進のデータを入れる。
0E 50 48 31 9E 85 A1 6B
----------
----------実行
bin2text.rb
----------
----------
----------出力
testdata.txt
----------テキストエディタで見ると...
0E 50 48 31 9E 85 A1 6B
----------
..........
bin2text.rbのソース
..........
#!/usr/bin/ruby -Ks
require 'kconv'
# datain = File.binread("test2.txt").tosjis
# File.binwrite("test2.bin", datain)
print(" test.dat -> test.txt
binary -> text
a1 b2 c3 -> a1 b2 c3\n")
print("input file ex) test.dat -> [test]\n")
f_name = STDIN.gets.chomp
print(f_name)
datain = File.open(f_name + ".dat", "rb") {|f| f.read }
# datain_split = datain.split(" ")
# datain_split = datain_split.join
# print(datain_split)
t_data = datain.unpack("H*")
t_data_s = t_data.to_s
num = t_data_s.length
num = num / 2
print(num)
for i in 1..num
t_data_s.insert(i*2+i-1," ")
end
# div = "a2"*num
# print(div)
# t_data_s = t_data_s.unpack(div)
# puts t_data_s
# b_data = [datain_split].unpack("H*")
open(f_name + ".txt", "w") {|f| f.write t_data_s}
..........
bin2text.rbとtestdata.datは同じディレクトリに置くこと。
bin2text.rb
注意点
たとえば、変換したいファイルの名前がabc.datだとすると、入力するのは「abc」だけである。
今回の例ではtestdata.txtなので「testdata」と入力する。するとtestdata.txtとして出力される。