【问题标题】:Mixing ASCII and Binary for record delimiters混合 ASCII 和二进制作为记录分隔符
【发布时间】:2012-04-27 04:08:01
【问题描述】:

我的要求是在文件中写入二进制记录。二进制记录可以被认为是内存中的原始字节。我需要一种方法来分隔每条记录,以便我可以对文件执行类似于二进制搜索的操作。例如从文件中间开始,找到下一个分隔的记录并开始搜索。

我的问题是,可以使用诸如“START-RECORD”之类的 ASCII 来分隔二进制记录吗? START-RECORD,数据长度,.......二进制数据............ START-RECORD,数据长度,.......二进制数据...... ......

当从文件中的任意位置开始时,我可以简单地搜索 ASCII 字符串“START-DATA”。这种方法可行吗?

【问题讨论】:

  • 也许你可以做这样的事情,但我看不出它有多大帮助。二进制印章搜索仅在记录已排序时才有效。唯一快速的方法是维护一个单独的索引,以便可以轻松添加数据,而无需移动/复制巨大的文件。如果已编入索引,则无需搜索起始字段。
  • 我同意你的 cmets 关于二分搜索。但另一种搜索方式是将文件分成任意块,并将这些块交给各个线程进行顺序扫描。块不必包含相同数量的记录。因此,一种方法是确定文件中包含完整记录的偏移量,并将这些偏移量分配给线程以进行搜索

标签: binary-data


【解决方案1】:

不是一次通过,因为您是否以二进制模式阅读。如果您插入一些字符串或其他模式作为“分隔符”,则需要在读取文件时搜索它的二进制表示。

【讨论】:

    猜你喜欢
    • 2017-10-27
    • 1970-01-01
    • 2019-07-09
    • 2020-06-11
    • 1970-01-01
    • 2016-10-05
    • 1970-01-01
    • 2022-01-13
    • 2018-07-28
    相关资源
    最近更新 更多