This question already has answers here:
What does least significant byte mean?
                                
                                    (4个答案)
                                
                        
                                3年前关闭。
            
                    
我正在分配作业,它要求我通过剥离整数的补码版本的最低有效字节来计算校验和...

这是我感到困惑的作业大纲的一部分:

“ CHECKSUM字段(MM)的值是通过计算COUNT,ADDRESS之和的1的补数值的最低有效字节得出的
和记录的DATA字段”

我对这意味着什么有点不清楚,因为我并没有真正使用C语言中的补码或LSB。

到目前为止,我有:

int checkSum(int count, int address, char* data)
{
int i = 0;
int dataTotal = 0;

for(i = 0; i < strlen(data); i += 2)
{
    dataTotal += (getIntFromHex(data[i]) * 16) + getIntFromHex(data[i + 1]);
}

int checksum = ~(count + address + dataTotal) & 1;
printf("Checksum: %.2X\n", checksum);

return checksum;
}


我并不是真的希望它能起作用,但是我已经做了一些研究,这就是我想出的。

我需要对最低有效字节的含义进行澄清。

附言for循环的原因仅仅是为了获取数据的总数。对此并不重要,但是代码使用了变量,因此我认为我将只复制整个内容以避免混淆。

最佳答案

我需要对最低有效字节的含义进行澄清。


最后一个有效字节表示数字256,从0到255的结果。

unsigned leastSignificantByte(unsigned j)
{
    return j & 0xff;
}

关于c - C-剥离最低有效字节,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35591748/

10-09 09:00