请问这个函数是什么意思?

2019-08-14 00:12发布

int memcpy_from_eeprom_with_checksum(char *destination, unsigned int source, unsigned int size) {
  unsigned char data, checksum = 0;
  for(; size > 0; size--) {
    data = eeprom_get_char(source++);
    checksum = (checksum << 1) || (checksum >> 7);
    checksum += data;   
    *(destination++) = data;
  }
  return(checksum == eeprom_get_char(source));
}

这个函数中的 checksum = (checksum << 1) || (checksum >> 7);
是什么意思,实现了什么算法。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
7条回答
jiutianshenjian
2019-08-14 06:06
本帖最后由 jiutianshenjian 于 2017-9-15 16:49 编辑

将eeprom起始地址source读取到destination开始的内存空间,读size个。
这个校验和是最后一个字节读出来跟自己计算的比较的。相等返回1,不相等返回0.
假如程序没贴错。
checksum = (checksum << 1) || (checksum >> 7)
每次读出一个字节后,校验和要么加1要么加0.
上次校验和全0才加0,其他都加1.

一周热门 更多>