crc32.h

来自「QAM module to use in Java with an easy i」· C头文件 代码 · 共 102 行

H
102
字号
//License: GNU
//
//
//
//    J-QAM sound card modem
//
//    Copyright (C) 2007  Jonti Olds
//
//
//
//    This program is free software: you can redistribute it and/or modify
//
//    it under the terms of the GNU General Public License as published by
//
//    the Free Software Foundation, either version 3 of the License, or
//
//    (at your option) any later version.
//
//
//
//    This program is distributed in the hope that it will be useful,
//
//    but WITHOUT ANY WARRANTY; without even the implied warranty of
//
//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//
//    GNU General Public License for more details.
//
//
//
//    You should have received a copy of the GNU General Public License
//
//    along with this program.  If not, see <http://www.gnu.org/licenses/>
//---------------------------------------------------------------------------

#ifndef Crc32H
#define Crc32H
#include <cassert>
//---------------------------------------------------------------------------
//Crc::Type
//const ethernetKey = 0x04c11db7;

class Crc
{
public:
	typedef unsigned long Type;

	Crc (Type key)
		: _key (key), _register (0)
	{}
	Type Done ()
	{
		Type tmp = _register;
		_register = 0;
		return tmp;
	}
protected:
	Type _key;	// really 33-bit key, counting implicit 1 top-bit
	Type _register;
};

class FastCrc: public Crc
{
public:
	FastCrc (Crc::Type key)
		: Crc (key)
	{
		_table.Init (key);
	}
	void PutByte (unsigned byte);
        unsigned long __fastcall CalcCRC32(unsigned char * Buf, int  Size);
private:
	class Table
	{
	public:
		Table () : _key (0) {}
		void Init (Crc::Type key);
		Crc::Type operator [] (unsigned i)
		{
			return _table [i];
		}
	private:
		Crc::Type _table [256];
		Crc::Type _key;
	};
private:
	static Table _table;
};

class SlowCrc: public Crc
{
public:
    SlowCrc (Crc::Type key)
        : Crc (key)
    {}

    void PutBit (bool bit);
};


#endif

⌨️ 快捷键说明

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