本来是
其中 Header 占了 2 字
也就是说数组长度为
检验正确。
现在将其改为
(int->hex 160) 是`0xa0` (
新值为
OK
0x0000009c 个字节, 分成 4 字节(合一字)部分有 39 个其中 Header 占了 2 字
也就是说数组长度为
37检验正确。
现在将其改为
(flip (int->hex (* (+ 38 2) 4)))(int->hex 160) 是`0xa0` (
0x000000a0)新值为
0xa0000000OK
1)最开始的两个字节是0x0003,表示这个块包含了一个完整的xml文件。接着两个字节是0x0008,表示该块头的长度有8个字节,除去这4个字节,整个头还剩下4个字节。接下来的4个字节0x00000684,表示整个块的大小,也就是该xml文件的大小。
0x00003dfc = 15868 (byte)之前我们为了 debug flag 插入了 4 字节
现在是
15868 + 4 = 15872 (byte)换算为 16 进是
0x3e00 (补齐一字是 0x3e000000)翻转得到需要更新的
0x0000003eirb(main):078:0> 0x00003dfc
=> 15868
irb(main):079:0> 0x00003dfc + 4
=> 15872
irb(main):080:0> 0x00003dff
=> 15871
irb(main):081:0> 0x00003e00
=> 15872
猜出来了(
AssertionError: Declared filesize does not match real size: 1040187392 vs 15872