FPGAなど、パソコンに関連することを載せている。


タイトル
仮運営中
google検索
このホームページ内の検索に使用してください。
テキストの16進データをバイナリに変換するrubyソースコード
本文コメント


テキストファイルに書いてある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として出力される。
使用する際はデータが正しく変換されることを確認する。


Copyright (C) 2013 雑 All Rights Reserved.