- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
#define FMT_2_LEN  16
#define FMT_4_LEN  24
// и т.д. всего около десятка форматов
void calc_check_code(const unsigned char * from, unsigned fmt, unsigned * code)
{
    switch (fmt) {
    case 2:
        //...
        memset(data, 0, sizeof(FMT_2_LEN));
        // выборочное наполнение data из from
        make_code(data, FMT_2_LEN, code);
        break;
    case 4:
        //...
        memset(data, 0, sizeof(FMT_4_LEN));
        // выборочное наполнение data из from
        make_code(data, FMT_2_LEN, code);
        break;
    // для всех остальных аналогично
}
                                     
        
            странно, и почему контрольный код не совпадает с эталонными примерами...