【发布时间】:2010-08-06 16:47:44
【问题描述】:
仅使用纯 ruby(或有理由常见的 gem)是否有一种有效的方法来搜索 large 二进制文档以查找特定的字节字符串?
更深层次的背景:mpeg4 容器格式是一个 4 字节索引的序列化数据结构,无需完全解析该结构(我可以假设它是有效的)我想拉出特定的标签。
对于那些在它工作之前没有遇到过这个“dmap”序列化的人:
<4-byte length<4-byte tag><4-byte length><4-byte type definition><8 bytes of something I can't remember><data>
例如,这将“tvsh”(或 TV Show)标签定义为“Futurama”
00 00 00 20 ...
74 76 73 68 tvsh
00 00 00 18 ....
64 61 74 61 data
00 00 00 01 ....
00 00 00 00 ....
46 75 74 75 Futu
72 61 6D 61 rama
确切的结构并不重要,我想写一个方法,当我给它'tvsh'时,它可以提取节目名称,如果我给它'tvsn',它是第2季。
我的第一个计划是使用正则表达式,但我有(不合理的)感觉这会很慢。
让我知道你的想法!提前致谢
【问题讨论】:
-
在 Ruby 中打开文件时,您可以为二进制文件添加标志
b,例如File.open("test.mpg", "rb")。这会有帮助吗? -
您的“大型二进制文档”是否太大而无法放入 RAM?
-
二进制仅在 Windows 上需要。仅供参考
-
这是一个 MPEG4 视频,所以它可能是 8GB,太大而无法放入内存!
标签: ruby regex binary-data