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


バイナリファイルに書いてある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として出力される。


Copyright (C) 2013 雑 All Rights Reserved.