A tiny checksum can combine byte values with masking to keep the result in range.

Byte Checksum

byte_checksum.c
#include <stdio.h>

int main(void) {
    int extra = ;
    unsigned int bytes[3] = {10, 20, (unsigned int)extra};
    unsigned int checksum = 0;

    for (int i = 0; i < 3; i++) {
        checksum = (checksum + bytes[i]) & 255;
    }

    printf("checksum=%u\n", checksum);
    return 0;
}
#include <stdio.h>

int main(void) {
    int extra = ;
    unsigned int bytes[3] = {10, 20, (unsigned int)extra};
    unsigned int checksum = 0;

    for (int i = 0; i < 3; i++) {
        checksum = (checksum + bytes[i]) & 255;
    }

    printf("checksum=%u\n", checksum);
    return 0;
}
#include <stdio.h>

int main(void) {
    int extra = ;
    unsigned int bytes[3] = {10, 20, (unsigned int)extra};
    unsigned int checksum = 0;

    for (int i = 0; i < 3; i++) {
        checksum = (checksum + bytes[i]) & 255;
    }

    printf("checksum=%u\n", checksum);
    return 0;
}
byte mask `& 255` keeps only the lowest eight bits of a running total.
bounded sum Masking after each addition prevents the checksum from growing without bound.