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日

悬赏问题

  • ¥15 vika文档如何与obsidian同步
  • ¥15 华为手机相册里面的照片能够替换成自己想要的照片吗?
  • ¥15 陆空双模式无人机飞控设置
  • ¥15 sentaurus lithography
  • ¥100 求抖音ck号 或者提ck教程
  • ¥15 关于#linux#的问题:子进程1等待子进程A、B退出后退出(语言-c语言)
  • ¥20 web页面如何打开Outlook 365的全球离线通讯簿功能
  • ¥15 io.jsonwebtoken.security.Keys
  • ¥15 急,ubuntu安装后no caching mode page found等
  • ¥15 联想交换机NE2580O/NE1064TO安装SONIC