硬逻辑 - 反转格式
Hard logic - Reversing a format
我有这段从文件中读取的代码:
dummy = fd.readLong();
for(i = 0; i < chunks; i++) {
dummy2=fd.readLong();
chunksizes[i] = dummy2- dummy;
dummy = dummy2;
}
我现在有一个块大小列表,我想用上面的格式写它们。我有一个名为 actualSizes 的数组,它是我想要写入的大小,我有块的数量。任何可以做到这一点的伪代码?我的脑袋都快疯了,但看起来很简单
似乎该文件有一个 偏移量列表 并且您将它们作为增量(块大小)加载到数组中:
0 100 250 420 580 Offsets from file
└──┬──┴──┬──┴──┬──┴──┬──┘
100 150 170 160 Deltas, aka chunk sizes
然后你说:
I now have a list of chunk sizes and I want to write them in the format above.
唯一的“上述格式”是 偏移量列表,因此您可以从增量 (chunk/actual) 大小列表创建偏移量列表,通过从 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)
我有这段从文件中读取的代码:
dummy = fd.readLong();
for(i = 0; i < chunks; i++) {
dummy2=fd.readLong();
chunksizes[i] = dummy2- dummy;
dummy = dummy2;
}
我现在有一个块大小列表,我想用上面的格式写它们。我有一个名为 actualSizes 的数组,它是我想要写入的大小,我有块的数量。任何可以做到这一点的伪代码?我的脑袋都快疯了,但看起来很简单
似乎该文件有一个 偏移量列表 并且您将它们作为增量(块大小)加载到数组中:
0 100 250 420 580 Offsets from file
└──┬──┴──┬──┴──┬──┴──┬──┘
100 150 170 160 Deltas, aka chunk sizes
然后你说:
I now have a list of chunk sizes and I want to write them in the format above.
唯一的“上述格式”是 偏移量列表,因此您可以从增量 (chunk/actual) 大小列表创建偏移量列表,通过从 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)