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

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条回答
meimengxing2014
2019-08-14 17:57
这个函数的功能是把EEPROM中的数据复制到一个数组中,在写入EEPROM之前把这组数据的校验和进行缩小,缩小成一个字节可以装得下,然后把这组数据连同其校验和一起写入EEPROM,在进行复制的时候,把数据和校验和从EEPROM中读出来,读出来的校验和按照缩小的比例放大,得到真实的校验和,然后比较校验和是不是相等,相等则读出数据无误,不相等读出数据有错误

一周热门 更多>