在 Ruby 中解析二进制文件
我需要能够使用 Ruby 解析二进制文件。 该文件包含通过标头找到的数据块,标头包括文件偏移量和每个块的长度。
如何正确获取数据? 到目前为止,我无法根据我读出的偏移量在文件中查找,因为它们以字符串形式出现,我不知道如何转换为 IO#seek 理解的格式。
有什么帮助吗? 将偏移量和长度转换为可用的东西(例如整数或其他东西)的通用方法会很有帮助。
I need to be able to parse a binary file with Ruby. This file contains chunks of data that are found via a header that includes the file offset and length of each chunk.
How do I get the data out correctly? I've been unable so far to seek around in the file based on the offsets I read out since they come out in strings that I don't know how to convert to a format IO#seek understands.
Any help? A general way to convert the offset and length into something usable (like an integer or something) would be helpful.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您需要 String#unpack。
You want String#unpack.
您还可以查看 BitStruct,它为解析二进制数据提供了一个很好的高级接口。
You could also take a look at BitStruct which offers a nice high-level interface for parsing binary data.
查看 BinData gem 及其列出的替代方案:
http://bindata.rubyforge.org/#alternatives
Check out the BinData gem, and the alternatives it lists:
http://bindata.rubyforge.org/#alternatives