计算某些值填充的算法是什么?

时间:2015-05-01 09:50:34

标签: file structure padding reverse-engineering

我将一些游戏文件翻转为翻译它并已经理解了所有内容,除了如何确定一些块填充。

例如,我将它放在一个文件中(两个条目各36个字节,然后零填充。总共96个字节):

01 08 01 80 00 00 00 09 00 00 08 C0 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 00
01 08 01 80 00 00 00 09 00 01 94 C0 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

这是另一个(1个条目36个字节,然后是零填充。总共64个字节):

01 08 01 80 00 00 00 09 00 00 04 80 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

我试图通过62,60,......,[32],......,[16],......,[8],......,[4],[2]开始设计64。

[]中的数字96和64可以无休止地分割。 但是,无衬垫尺寸(72和36)也可以除以2,4,8。 什么是填充?如何计算?

1 个答案:

答案 0 :(得分:1)

在我看来,00填充字节的数量应该如下计算:

padding(num_bytes)=ceil(num_bytes/32)*32-num_bytes

然后我们得到第一个案例

padding(2*36) = 24

另外24个填充字节(总共96个)和第二种情况

padding(36) = 28

28个额外的填充字节(总共64个)。