加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用ruby读取二进制文件时查找字节数组实例的最佳方法是什么?

发布时间:2020-12-17 01:56:03 所属栏目:百科 来源:网络整理
导读:我正在逆向工程一些旧的数据库文件.这很不错.到目前为止,我使用过的所有文件都有固定的宽度记录,宽度在标题中定义.非常直接..我知道标题长度,所以我可以在标题后面开始读取文件然后我知道X字节后来我到达记录的末尾.如果记录是30个字节,标题是100,我可以这样
我正在逆向工程一些旧的数据库文件.这很不错.到目前为止,我使用过的所有文件都有固定的宽度记录,宽度在标题中定义.非常直接..我知道标题长度,所以我可以在标题后面开始读取文件然后我知道X字节后来我到达记录的末尾.如果记录是30个字节,标题是100,我可以这样做:

file = IO.binread(path + file_name,end_of_header,end_of_file)
 read_file(file[0,30]) #This calls a function that parses the data..

但是,有几个表具有动态宽度记录.因此,一个记录可以是100个字节,下一个可以是20个字节.记录与用户保存的文本量一样大.似乎没有任何记录记录长度的记录.

每个记录由分隔符(FEFE)分隔.我正在扫描下一个分隔符并以这种方式拉动记录,但是需要永远地逐字节地读取整个文件以查找匹配.有没有比扫描更好的方法来查找下一个匹配项或获取每个字节数组出现的所有索引的列表?

ruby…

解决方法

您可以为readline指定分隔符

file.readline(sep="FEFE")

或者如果你的意思是2字符十六进制字符串:

file.readline(sep="xFExFE")

获取一条记录(包括分隔符)

或者您可以传递给代码块

file.readlines(sep="xFExFE").each{|line|...}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读