バイナリとダンプの相互変換

バイナリからダンプ

print 'ファイル名:'
filename = gets.chomp

File.open(filename, 'r') do |file|
	i = 0
	file.each_byte do |c|
		if i != 0
			print ( i % 16 == 0 ) ? "\n" : ' '
		end
		print '%02x' % c
		i += 1
	end
end

ダンプからバイナリ

puts '16進ダンプ:'
data = gets(nil)
print 'ファイル名:'
filename = gets.chomp

File.open(filename, 'w') do |file|
	data.scan(/[0-9a-f]{2}/i).map{|v|v.to_i(16)}.each do |c|
		file.putc c
	end
end