lhp2333 2022-07-12 11:41 采纳率: 100%
浏览 35
已结题

用最少的数据传输比对两地数据一致性

两个单片机之间都存有一个数据表,如何用最少的数据传输,比对两个数据表是否一致?
以下简称AB单片机,修改总是在A发起,并同步到B,B存储到flash使用 ,在AB开机时也需要比对两份数据一致,不一致则开始同步。

1.最简单的办法就是A的数据发给B,B执行逐字比对,但是这种办法要传送的数据量太大了。
2.将AB的数据表各自使用相同的校验方法(CRC/求和)得出校验值,只传输并比对校验值,但是这种方法无法保证比对结果一定正确(不同的数据可能得出相同的校验值)。
3.使用数据累加ID,当A修改数据时,数据ID+1,只需要对比AB的数据ID是否一致来判定数据相等,这个方法同样存在不同数据比对结果相同的可能。

这个需求类似于云盘和本地数据比对是否不同,如果用最少的数据交互得出100%正确的比对结果。

  • 写回答

1条回答 默认 最新

  • qllaoda 2022-07-12 13:17
    关注

    用hash算法,比如MD5,两组不同的数据MD5一致的概率极低。CRC其实也可以算是一种简单的hash,但那个太短,冲突的可能性大。
    实际上云盘基本都是用hash来检验文件是否一致的。
    一般来说MD5完全足够,你要是不放心,还可以添加一些额外信息,比如数据长度,关键点参考值,或者再补充另一种算法的hash值

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 7月21日
  • 已采纳回答 7月13日
  • 修改了问题 7月12日
  • 创建了问题 7月12日