我有一个函数,我很难理解数学是如何执行的:
unsigned long Fat_AuthAnswer(char b1, char b2, char b3, char b4)`
{
unsigned char* ptr = NULL;
unsigned short StartCRC = b1 + b2*256;
unsigned long ret = crcbuf(StartCRC, b3, &AuthBlock[b4]);
ret = (ret & 0x0000ffff) | (crcbuf(StartCRC, b4, &AuthBlock[b3])<<16);
}
B1=0xAF,B2=0x50
当函数执行时,StartCRC=b1+b2*256;产生StartCRC=0x4FAF
我原以为StartCRC的结果为0x50AF。
我的问题是为什么看起来b2减少了一个?如有任何帮助,我们将不胜感激。谢谢
您的环境中的
您应该将
unsigned short StartCRC = static_cast<unsigned char>(b1) + b2*256;