【问题标题】:How to reorganise data in a binary file in C?如何在 C 中重新组织二进制文件中的数据?
【发布时间】:2019-09-23 05:24:29
【问题描述】:

我有一个二进制文件,其中包含分布在文件中的 128 字节块中的数据。每个块都以长度为8 的char 数组开头。

如何重新组织这个二进制文件中的数据,使所有 128 字节的块按顺序排列,并且这些块之间没有未使用的空间?

未使用/未分配的空间在此文件中仅由0 表示,字符串以空结尾。

我很迷茫。

【问题讨论】:

  • 你能给我们展示一些你有什么和你想要什么的例子吗?
  • 读取它,以所需格式写入临时文件,删除原始文件,重命名临时文件。
  • “分布在文件中的”请更准确地解释这是什么意思。
  • "按顺序排列"请更准确地解释这是什么意思。
  • 所以在二进制文件中,数据块可能以随机偏移量开始,例如 0、500、648 等。这就是我所说的块“分布在文件中”的意思。当我说我希望这些块“按顺序排列”时,我的意思是它们开始的文件中的第一个字节是 0、128、256 等。

标签: c file binary


【解决方案1】:

您的问题不是完整的规范,例如:

 - what is unused space?
 - do the char arrays contain string terminator or not?
 - is the file small enough to read into memory, or is it large?

所以我不能写给你。但是,如果您遵循以下说明,您可以轻松地对其进行编程:

1. Build a list of pointers to the used 128 bytes blocks.
2. Sort that list.
3. You can now overwrite the file looping through the ordered list of pointers.

【讨论】:

  • 感谢您的帮助!未使用/未分配的空间在此文件中仅由 0 表示,并且字符串以空值结尾。该文件足够小,可以读入内存。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-29
  • 1970-01-01
  • 2012-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多