前面的实验中,使用Arduino方式,只在递减方式下获得了成功,本次实验就以递减方式继续尝试和值块数据有关的测试。前面的测试中值块中最后的数据为:
1、块地址
2、块地址取反
3、块地址
4、块地址取反
接下我扔回到以前的那种方式:
1、0
2、0
3、0
4、块地址
其实根据前面的测试发现,在递减处理中,改变的数据是从块中的第0个数据开始的,因此块数据中偏移位置0~3的数据被我就改成以下形式,
第8块数据:00 01 00 00
第9块数据:00 00 01 00
第9块数据:00 00 00 01
目的是测试减处理中的借位情况
整体数据(16进制):
第8块:00 01 00 00 FF FE FF FF 00 01 00 00 00 00 00 08
第9块:00 00 01 00 FF FF FE FF 00 00 01 00 00 00 00 09
第9块:00 00 00 01 FF FF FF FE 00 00 00 01 00 00 00 0A

测试效果:

没通过(这里估计原因是addValue先被执行,而块地址是4,不在地2扇区的缘故),把最后四位再改回去测试,依旧失败。
然后把加减处理的代码再改回以前能部分成功的,变成了这样,

再把最后四位改成“00 00 00 地址”的样子测试,


测试表明,快中的第四部分数据作为值块使用时不是随意可以设置的。接下来,第四部分的数据我不用块地址,而是用其他数据,形式上为
x、x反、x、x反、
方式,再次测试:


测试成功(注,此处已经修改addValue(4, 2) 为addValue(block, 2))。
接下来对第8块,使用下面数据测试:
{0x00, 0x01, 0x00, 0x00, 0xFF, 0xFE, 0xFF, 0xFF, 0x00, 0x01, 0x00, 0x00, 0xFF, 0, 0xF0, 0x0F};
就是说最后两组数据不同,但做了取反处理,
0xFF - 0
0xF0 - 0x0F
测试依旧失败。
综合本次实验说明:
1、加减处理中,数据是以偏移0 - 偏移3位置的数据整体处理,整个数据相当于无符号Long型数据(16进制表达为:Byte3、 Byte2、 Byte1、 Byte0),在扇区的块中的排列为(按照偏移0 ~ 偏移3形式存放):
Byte0, Byte1, Byte2, Byte3
的形式保存的。
2、偏移地址12 - 15四个位置的数据,必须是
X,X反,Y,Y反
形式,X和Y是否相同,不重要。
接下来我测试加减溢出时是什么样子(0减,最大值加1)


显然出现了溢出了,依旧会执行计算,结果与借位和溢出后的数据是一样的,数据会在0到0xFF FF FF FF之间循环。
我要赚赏金
