【发布时间】:2012-04-27 04:08:01
【问题描述】:
我的要求是在文件中写入二进制记录。二进制记录可以被认为是内存中的原始字节。我需要一种方法来分隔每条记录,以便我可以对文件执行类似于二进制搜索的操作。例如从文件中间开始,找到下一个分隔的记录并开始搜索。
我的问题是,可以使用诸如“START-RECORD”之类的 ASCII 来分隔二进制记录吗? START-RECORD,数据长度,.......二进制数据............ START-RECORD,数据长度,.......二进制数据...... ......
当从文件中的任意位置开始时,我可以简单地搜索 ASCII 字符串“START-DATA”。这种方法可行吗?
【问题讨论】:
-
也许你可以做这样的事情,但我看不出它有多大帮助。二进制印章搜索仅在记录已排序时才有效。唯一快速的方法是维护一个单独的索引,以便可以轻松添加数据,而无需移动/复制巨大的文件。如果已编入索引,则无需搜索起始字段。
-
我同意你的 cmets 关于二分搜索。但另一种搜索方式是将文件分成任意块,并将这些块交给各个线程进行顺序扫描。块不必包含相同数量的记录。因此,一种方法是确定文件中包含完整记录的偏移量,并将这些偏移量分配给线程以进行搜索
标签: binary-data