首页 > 解决方案 > 硬逻辑 - 反转格式

问题描述

我有这个从文件中读取的代码:

dummy = fd.readLong();
for(i = 0; i < chunks; i++) {
    dummy2=fd.readLong();
    chunksizes[i] = dummy2- dummy;
    dummy = dummy2;
}

我现在有一个块大小列表,我想以上面的格式编写它们。我有一个名为 actualSizes 的数组,它是我要写入的大小,我有块的数量。任何可以做到这一点的伪代码?我的头快疯了,但它看起来很简单

标签: javaiologic

解决方案


似乎该文件有一个偏移量列表,并且您将它们作为增量(块大小)加载到数组中:

0    100   250   420   580    Offsets from file
└──┬──┴──┬──┴──┬──┴──┬──┘
  100   150   170   160       Deltas, aka chunk sizes

然后你说:

我现在有一个块大小列表,我想以上面的格式编写它们。

唯一的“上面的格式”是偏移量列表,因此您可以从增量(块/实际)大小列表中创建偏移量列表,方法是从0一个运行总和开始并编写:

long offset = 0;
fd.writeLong(offset);
for (long size : actualSizes) {
    offset += size;
    fd.writeLong(offset);
}
  120   140   130   150       actual sizes
┌──┴──┬──┴──┬──┴──┬──┴──┐
0    120   260   390   540    offsets in file (running total)

推荐阅读