和校验(CheckSum)

文章目录

算法介绍

和校验是最简单、最直观的检错编码方法,属于检错码(不能纠错)。

核心思想:

把数据的所有字节按位相加,将结果的低8位(或低16位)作为校验码,附加在数据末尾一起发送。

bash 复制代码
┌─────────────────────────────────────────────┐
│              发送方                          │
│                                             │
│  数据:D₁  D₂  D₃  ...  Dₙ                 │
│           ↓    ↓    ↓       ↓               │
│         相加:S = D₁+D₂+D₃+...+Dₙ           │
│           ↓                                 │
│  校验和:CS = S 的低8位(模256)             │
│           ↓                                 │
│  发送:D₁ D₂ D₃ ... Dₙ  CS                 │
└─────────────────────────────────────────────┘

┌─────────────────────────────────────────────┐
│              接收方                          │
│                                             │
│  收到:D₁' D₂' D₃' ... Dₙ'  CS'           │
│           ↓    ↓    ↓       ↓               │
│         相加:S' = D₁'+D₂'+...+Dₙ' + CS'   │
│           ↓                                 │
│  判断:S' 的低8位 = 0 ?                    │
│         ✅ = 0 → 可能正确                   │
│         ❌ ≠ 0 → 一定有错                  │
└─────────────────────────────────────────────┘

常见形式及实现

优缺点分析

检不出的错误类型

常见类型及实现方法(以python为例)

8位和校验:

bash 复制代码
uint8_t CheckSum(uint8_t *Buf, uint8_t Len)
{
    uint8_t i=0;
    uint8_t sum =0;

    for(i=0;i<Len; i++)
    {
        sum += *Buf++;
    }
    
    return sum;
}

16位和校验:

bash 复制代码
uint16_t CheckSum(uint16_t *Buf, uint8_t Len)
{
    uint8_t i=0;
    uint16_t sum =0;

    for(i=0;i<Len; i++)
    {
        sum += *Buf++;
    }
    
    return sum;
}
相关推荐
通信小呆呆17 天前
当算法有了“五感”:多模态数据融合如何向人体感官协同学习?
人工智能·学习·算法·机器学习·机器人
H__Rick17 天前
自动对焦学习-3
人工智能·学习·计算机视觉
Daisy Lee17 天前
量化学习-第1章-什么是量化金融
学习·金融·datawhale
Alsn8617 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
YM52e17 天前
买菜计算器小应用 - HarmonyOS ArkUI 开发实战-PC版本
学习·华为·harmonyos·鸿蒙·鸿蒙系统
小雨下雨的雨17 天前
HarmonyOS ArkUI训练营入门-组件掌握系列-Animation 动画效果实现-PC版本
学习·华为·harmonyos·鸿蒙
cqbzcsq17 天前
CellFlow虚拟细胞论文阅读
论文阅读·人工智能·笔记·学习·生物信息
YangYang9YangYan17 天前
2026初入职场学习数据分析的价值
学习·数据挖掘·数据分析
guslegend17 天前
理论学习:什么是 Coding Agent?
学习
自传.17 天前
尚硅谷 Vibe Coding|第三章(1) Claude Code深度使用与进阶技巧 学习笔记
笔记·学习·尚硅谷·vibecoding