当前位置:编程学习 > 网站相关 >>

整个文件转16进制的ruby脚本(ruby二进制操作)

fin=File.open(c:\windows\system32\cmd.exe, rb).read.unpack("H*").to_s
chars=fin.scan(/../)
chars.each{|i| print i," "}

#==反转

‍fin=File.open(c:\windows\system32\cmd.exe, rb).read.unpack("H*").to_s
fout=File.open(222.exe, wb)
chars=fin.scan(/../)
chars.each {|char| fout.print char.to_i(16).chr }

#注意一定要用print

#以上这样转成16进制是为了方便替换二进制里的修改、替换等操作。如果直接读二进制到另一个文件,有别的办法(google来的):

File.open(in.dat, rb) {|fin|
File.open(out.dat, wb) {|fout|
fout.print(fin.read)
}
}

f = File.new("filename" , "rb")  
target = open("targetfile" , "wb")  
while true
    str = f.sysread(8*8)  
    target.syswrite(str)  
rescue
        #用sysread当到达eof后会抛错,但只要有内容就能读取  
        #还有一个offset的seek方法可以手动操作  
    break
end
f.close  
target.close

补充:综合编程 , 其他综合 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,