テキストファイルに書いてある16進のデータをバイナリファイルにそのまま変換するrubyファイルを作成した。
rubyプログラミングのサンプルソースコードを以下に示す。
テキストエディタ バイナリエディタ
text(.txt) binary(.dat)
0A 24 9C -> 0A 24 9C
例
----------入力
testdata.txt
----------テキストデータに16進のデータを入れる。間に半角のスペースがあっても良い。
0E 50 48 31 9E 85 A1 6B
----------
テキストエディタで見ると...
fig1. testdata_txt.PNG
----------実行
text2bin.rb
----------コマンドプロンプト
C:\develop\zzz\ruby>text2bin.rb
input file ex) test.txt -> [test]
testdata
testdata0E5048319E85A16B
C:\develop\zzz\ruby>
----------
----------出力
testdata.dat
----------テキストエディタで見ると...
PH1桿。k
----------
バイナリエディタで見ると、
fig2. testdata_dat_binary.PNG
..........
text2bin.rbのソース
..........
#!/usr/bin/ruby -Ks
require 'kconv'
# datain = File.binread("test2.txt").tosjis
# File.binwrite("test2.bin", datain)
print("input file ex) test.txt -> [test]\n")
f_name = STDIN.gets.chomp
print(f_name)
datain = File.open(f_name + ".txt", "r") {|f| f.read }
datain_split = datain.split(" ")
datain_split = datain_split.join
print(datain_split)
b_data = [datain_split].pack("H*")
open(f_name + ".dat", "wb") {|f| f.write b_data}
..........
//////////
ソースの軽い説明
//////////
print() ## 画面に出力
\n ## 改行
STDIN.gets ## 標準入力.getsのみでもいけるらしい
chomp ## getsでデータを取り込むと最後に改行コード(\n)がつくのでその改行コードを取り除く
open ## ファイルを開く r->read,w->write,b->binary
//////////
text2bin.rbとtestdata.txtは同じディレクトリに置くこと。
ソースは自由に改変可能。たとえば、拡張子を変えたり...
text2bin.rb
testdata.txt
注意点
たとえば、変換したいファイルの名前がabc.txtだとすると、入力するのは「abc」だけである。
今回の例ではtestdata.txtなので「testdata」と入力する。するとtestdata.datとして出力される。
使用する際はデータが正しく変換されることを確認する。