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

📄 crc32.c

📁 HEG是一个易用的强大的硬件加速2D游戏引擎 他完全具备了具有开发商业质量的2D游戏的中层引擎
💻 C
📖 第 1 页 / 共 2 页
字号:
/* =========================================================================
 * This function can be used by asm versions of crc32()
 */

DWORD *ZEXPORT get_crc_table()
{
  return (DWORD*)crc_table;
}

/* ========================================================================= */
#define DOLIT4 c ^= *buf4++; c = crc_table[3][c & 0xff] ^ crc_table[2][(c >> 8) & 0xff] ^  crc_table[1][(c >> 16) & 0xff] ^ crc_table[0][c >> 24]
#define DOLIT32 DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4

/* ========================================================================= */

DWORD ZEXPORT crc32(DWORD crc, const BYTE *buf, DWORD len)
{
  DWORD c = ~crc;
  const DWORD *buf4;

  while (len && ((ptrdiff_t)buf &3))
  {
    c = crc_table[0][(c ^  *buf++) &0xff] ^ (c >> 8);
    len--;
  }

  buf4 = (const DWORD*)buf;

  while (len >= 32)
  {
    DOLIT32;
    len -= 32;
  }

  while (len >= 4)
  {
    DOLIT4;
    len -= 4;
  }

  buf = (const BYTE*)buf4;

  for (; len; len--)
  {
    c = crc_table[0][(c ^  *buf++) &0xff] ^ (c >> 8);
  }

  return ~c;
}

⌨️ 快捷键说明

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