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

📄 crc.c

📁 Hermit-at-1.1.3,一款bootloader
💻 C
字号:
/* * Implementation of CRC-32 from the online Compression FAQ. */#include <target/crc.h>/* * Polynomial used to build table for parallel byte-at-a-time CRC-32. */#define CRC32_POLY 0x04c11db7static uint32_t crc32tab [256];void init_crc32(void){	int i, j;	uint32_t c;	for (i = 0; i < sizeof crc32tab / sizeof *crc32tab; ++i) {		for (c = i << 24, j = 8; j > 0; --j)			c = c & 0x80000000 ? (c << 1) ^ CRC32_POLY : (c << 1);		crc32tab[i] = c;	}}uint32_t crc32(const unsigned char *buf, unsigned size){	const unsigned char *p;	uint32_t crc;	crc = 0xffffffff;	/* preload shift register, per CRC-32 spec */	for (p = buf; size > 0; ++p, --size)		crc = (crc << 8) ^ crc32tab[(crc >> 24) ^ *p];	return ~crc;	/* transmit complement, per CRC-32 spec */}

⌨️ 快捷键说明

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