本帖最后由 sinside 于 2021-9-15 13:08 编辑
首先, 假设你的通讯是对的(我没有细看你的程序), 先只验证下面的程序是否正确:
switch (len)
{
case 2:e=b;b=0; break;
case 3:e=b*10+c;break;
case 4:e=b*100+c*10+d;break;
}
假设你的输入(设置断点或者单独把这段程序直接执行) 在进程序前 把b的值设置成0xA1, len分别设置成 2, 3, 4, c = 0, d = 0, 看看len=2的时候e计算是否正确, len=3的时候e的计算是否正确, len=4的时候是否正确.
如果都正确, 那么你原来不正确, 是否是有什么条件与上面的设置不一样? 才导致结果不正确?
再逐一排查是否是变量的类型问题, 还是b的值问题, 还是c的值问题, 还是e, len的值哪一个有问题?
上面说的只是一种调试的方法, 不知道我是不是说清楚了? (就是你的计算就放在哪里, 进计算前, 所有的条件都定了, 看看结果是不是你预料的, 如果不是就逐一排查各种条件)
|