⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 crc.cpp

📁 DOS下采用中断接收数据的串口通讯的例子,很难找到的好东西!
💻 CPP
字号:
// ********************* START OF CRC.CPP *********************
//
// This file contains the supporting code for the two CRC classes,
// Crc16 and Crc32.
//

#include "crc.h"

unsigned long Crc32::table[ 256 ];
int Crc32::initialized = 0;

Crc32::Crc32( unsigned long init_value )
{
    if ( !initialized ) {
        int i;
        int j;
        unsigned long coeff;

        for ( i = 0; i < 256 ; i++ ) {
            coeff = i;
            for ( j = 0; j < 8; j++ ) {
                if ( coeff & 1 )
                    coeff = ( coeff >> 1 ) ^ 0xEDB88320L;
                else
                    coeff >>= 1;
            }
            table[ i ] = coeff;
        }
        initialized = 1;
    }
    crc = init_value;
}

unsigned short Crc16::table[ 256 ];
int Crc16::initialized = 0;

Crc16::Crc16( unsigned short init_value )
{
    if ( !initialized ) {
        int i;
        int j;
        int k;
        int crc;

        for ( i = 0 ; i < 256 ; i++ ) {
            k = i << 8;
            crc = 0;
            for ( j = 0 ; j < 8 ; j++ ) {
                if ( ( crc ^ k ) & 0x8000 )
                    crc = ( crc << 1 ) ^ 0x1021;
                else
                    crc <<= 1;
                k <<= 1;
            }
            table[ i ] = (unsigned short) crc;
        }
        initialized = 1;
    }
    crc = init_value;
}

// *********************** END OF CRC.CPP ***********************

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -