亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? crc32.c

?? 這是一個三層的進銷存系統
?? C
字號:
/* crc32.c -- compute the CRC-32 of a data stream
 * Copyright (C) 1995-2003 Mark Adler
 * For conditions of distribution and use, see copyright notice in zlib.h
 *
 * Thanks to Rodney Brown <rbrown64@csc.com.au> for his contribution of faster
 * CRC methods: exclusive-oring 32 bits of data at a time, and pre-computing
 * tables for updating the shift register in one step with three exclusive-ors
 * instead of four steps with four exclusive-ors.  This results about a factor
 * of two increase in speed on a Power PC G4 (PPC7455) using gcc -O3.
 */

/* @(#) $Id$ */

#ifdef MAKECRCH
#  include <stdio.h>
#  ifndef DYNAMIC_CRC_TABLE
#    define DYNAMIC_CRC_TABLE
#  endif /* !DYNAMIC_CRC_TABLE */
#endif /* MAKECRCH */

#include "zutil.h"      /* for STDC and FAR definitions */

#define local static

/* Find a four-byte integer type for crc32_little() and crc32_big(). */
#ifndef NOBYFOUR
#  ifdef STDC           /* need ANSI C limits.h to determine sizes */
#    include <limits.h>
#    define BYFOUR
#    if (UINT_MAX == 0xffffffffUL)
       typedef unsigned int u4;
#    else
#      if (ULONG_MAX == 0xffffffffUL)
         typedef unsigned long u4;
#      else
#        if (USHRT_MAX == 0xffffffffUL)
           typedef unsigned short u4;
#        else
#          undef BYFOUR     /* can't find a four-byte integer type! */
#        endif
#      endif
#    endif
#  endif /* STDC */
#endif /* !NOBYFOUR */

/* Definitions for doing the crc four data bytes at a time. */
#ifdef BYFOUR
#  define REV(w) (((w)>>24)+(((w)>>8)&0xff00)+ \
                (((w)&0xff00)<<8)+(((w)&0xff)<<24))
   local unsigned long crc32_little OF((unsigned long,
                        const unsigned char FAR *, unsigned));
   local unsigned long crc32_big OF((unsigned long,
                        const unsigned char FAR *, unsigned));
#  define TBLS 8
#else
#  define TBLS 1
#endif /* BYFOUR */

#ifdef DYNAMIC_CRC_TABLE

local int crc_table_empty = 1;
local unsigned long FAR crc_table[TBLS][256];
local void make_crc_table OF((void));
#ifdef MAKECRCH
   local void write_table OF((FILE *, const unsigned long FAR *));
#endif /* MAKECRCH */

/*
  Generate tables for a byte-wise 32-bit CRC calculation on the polynomial:
  x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x+1.

  Polynomials over GF(2) are represented in binary, one bit per coefficient,
  with the lowest powers in the most significant bit.  Then adding polynomials
  is just exclusive-or, and multiplying a polynomial by x is a right shift by
  one.  If we call the above polynomial p, and represent a byte as the
  polynomial q, also with the lowest power in the most significant bit (so the
  byte 0xb1 is the polynomial x^7+x^3+x+1), then the CRC is (q*x^32) mod p,
  where a mod b means the remainder after dividing a by b.

  This calculation is done using the shift-register method of multiplying and
  taking the remainder.  The register is initialized to zero, and for each
  incoming bit, x^32 is added mod p to the register if the bit is a one (where
  x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by
  x (which is shifting right by one and adding x^32 mod p if the bit shifted
  out is a one).  We start with the highest power (least significant bit) of
  q and repeat for all eight bits of q.

  The first table is simply the CRC of all possible eight bit values.  This is
  all the information needed to generate CRCs on data a byte at a time for all
  combinations of CRC register values and incoming bytes.  The remaining tables
  allow for word-at-a-time CRC calculation for both big-endian and little-
  endian machines, where a word is four bytes.
*/
local void make_crc_table()
{
    unsigned long c;
    int n, k;
    unsigned long poly;            /* polynomial exclusive-or pattern */
    /* terms of polynomial defining this crc (except x^32): */
    static const unsigned char p[] = {0,1,2,4,5,7,8,10,11,12,16,22,23,26};

    /* make exclusive-or pattern from polynomial (0xedb88320UL) */
    poly = 0UL;
    for (n = 0; n < sizeof(p)/sizeof(unsigned char); n++)
        poly |= 1UL << (31 - p[n]);

    /* generate a crc for every 8-bit value */
    for (n = 0; n < 256; n++) {
        c = (unsigned long)n;
        for (k = 0; k < 8; k++)
            c = c & 1 ? poly ^ (c >> 1) : c >> 1;
        crc_table[0][n] = c;
    }

#ifdef BYFOUR
    /* generate crc for each value followed by one, two, and three zeros, and
       then the byte reversal of those as well as the first table */
    for (n = 0; n < 256; n++) {
        c = crc_table[0][n];
        crc_table[4][n] = REV(c);
        for (k = 1; k < 4; k++) {
            c = crc_table[0][c & 0xff] ^ (c >> 8);
            crc_table[k][n] = c;
            crc_table[k + 4][n] = REV(c);
        }
    }
#endif /* BYFOUR */

  crc_table_empty = 0;

#ifdef MAKECRCH
    /* write out CRC tables to crc32.h */
    {
        FILE *out;

        out = fopen("crc32.h", "w");
        if (out == NULL) return;
        fprintf(out, "/* crc32.h -- tables for rapid CRC calculation\n");
        fprintf(out, " * Generated automatically by crc32.c\n */\n\n");
        fprintf(out, "local const unsigned long FAR ");
        fprintf(out, "crc_table[TBLS][256] =\n{\n  {\n");
        write_table(out, crc_table[0]);
#  ifdef BYFOUR
        fprintf(out, "#ifdef BYFOUR\n");
        for (k = 1; k < 8; k++) {
            fprintf(out, "  },\n  {\n");
            write_table(out, crc_table[k]);
        }
        fprintf(out, "#endif\n");
#  endif /* BYFOUR */
        fprintf(out, "  }\n};\n");
        fclose(out);
    }
#endif /* MAKECRCH */
}

#ifdef MAKECRCH
local void write_table(out, table)
    FILE *out;
    const unsigned long FAR *table;
{
    int n;

    for (n = 0; n < 256; n++)
        fprintf(out, "%s0x%08lxUL%s", n % 5 ? "" : "    ", table[n],
                n == 255 ? "\n" : (n % 5 == 4 ? ",\n" : ", "));
}
#endif /* MAKECRCH */

#else /* !DYNAMIC_CRC_TABLE */
/* ========================================================================
 * Tables of CRC-32s of all single-byte values, made by make_crc_table().
 */
#include "crc32.h"
#endif /* DYNAMIC_CRC_TABLE */

/* =========================================================================
 * This function can be used by asm versions of crc32()
 */
const unsigned long FAR * ZEXPORT get_crc_table()
{
#ifdef DYNAMIC_CRC_TABLE
  if (crc_table_empty) make_crc_table();
#endif /* DYNAMIC_CRC_TABLE */
  return (const unsigned long FAR *)crc_table;
}

/* ========================================================================= */
#define DO1 crc = crc_table[0][((int)crc ^ (*buf++)) & 0xff] ^ (crc >> 8)
#define DO8 DO1; DO1; DO1; DO1; DO1; DO1; DO1; DO1

/* ========================================================================= */
unsigned long ZEXPORT crc32(crc, buf, len)
    unsigned long crc;
    const unsigned char FAR *buf;
    unsigned len;
{
    if (buf == Z_NULL) return 0UL;

#ifdef DYNAMIC_CRC_TABLE
    if (crc_table_empty)
        make_crc_table();
#endif /* DYNAMIC_CRC_TABLE */

#ifdef BYFOUR
    if (sizeof(void *) == sizeof(ptrdiff_t)) {
        u4 endian;

        endian = 1;
        if (*((unsigned char *)(&endian)))
            return crc32_little(crc, buf, len);
        else
            return crc32_big(crc, buf, len);
    }
#endif /* BYFOUR */
    crc = crc ^ 0xffffffffUL;
    while (len >= 8) {
        DO8;
        len -= 8;
    }
    if (len) do {
        DO1;
    } while (--len);
    return crc ^ 0xffffffffUL;
}

#ifdef BYFOUR

/* ========================================================================= */
#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

/* ========================================================================= */
local unsigned long crc32_little(crc, buf, len)
    unsigned long crc;
    const unsigned char FAR *buf;
    unsigned len;
{
    register u4 c;
    register const u4 FAR *buf4;

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

    buf4 = (const u4 FAR *)buf;
    while (len >= 32) {
        DOLIT32;
        len -= 32;
    }
    while (len >= 4) {
        DOLIT4;
        len -= 4;
    }
    buf = (const unsigned char FAR *)buf4;

    if (len) do {
        c = crc_table[0][(c ^ *buf++) & 0xff] ^ (c >> 8);
    } while (--len);
    c = ~c;
    return (unsigned long)c;
}

/* ========================================================================= */
#define DOBIG4 c ^= *++buf4; \
        c = crc_table[4][c & 0xff] ^ crc_table[5][(c >> 8) & 0xff] ^ \
            crc_table[6][(c >> 16) & 0xff] ^ crc_table[7][c >> 24]
#define DOBIG32 DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4

/* ========================================================================= */
local unsigned long crc32_big(crc, buf, len)
    unsigned long crc;
    const unsigned char FAR *buf;
    unsigned len;
{
    register u4 c;
    register const u4 FAR *buf4;

    c = REV((u4)crc);
    c = ~c;
    while (len && ((ptrdiff_t)buf & 3)) {
        c = crc_table[4][(c >> 24) ^ *buf++] ^ (c << 8);
        len--;
    }

    buf4 = (const u4 FAR *)buf;
    buf4--;
    while (len >= 32) {
        DOBIG32;
        len -= 32;
    }
    while (len >= 4) {
        DOBIG4;
        len -= 4;
    }
    buf4++;
    buf = (const unsigned char FAR *)buf4;

    if (len) do {
        c = crc_table[4][(c >> 24) ^ *buf++] ^ (c << 8);
    } while (--len);
    c = ~c;
    return (unsigned long)(REV(c));
}

#endif /* BYFOUR */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区免费| 色老汉一区二区三区| 天堂va蜜桃一区二区三区| 日韩伦理电影网| 亚洲女厕所小便bbb| 日韩理论片中文av| 一区二区三区蜜桃| 亚洲综合色区另类av| 亚洲成人先锋电影| 奇米影视7777精品一区二区| 麻豆精品精品国产自在97香蕉| 一区二区三区精品| 日韩精品国产精品| 国产在线精品一区二区夜色 | 亚洲午夜电影在线观看| 亚洲欧美激情插| 偷窥少妇高潮呻吟av久久免费| 亚洲成人一区二区| 国产美女在线观看一区| k8久久久一区二区三区| 91久久精品一区二区三| 4438x亚洲最大成人网| 久久影院午夜片一区| 国产精品沙发午睡系列990531| 亚洲美女屁股眼交| 久久精品噜噜噜成人88aⅴ| 成人永久免费视频| 欧美色综合网站| 久久嫩草精品久久久精品| 亚洲三级久久久| 美女脱光内衣内裤视频久久网站 | 欧美国产激情二区三区 | 欧美一区二区三区影视| 中文字幕av不卡| 五月天激情小说综合| 国产在线播精品第三| 色综合av在线| 精品国产乱码久久久久久免费| 亚洲色图清纯唯美| 黑人巨大精品欧美黑白配亚洲| 色域天天综合网| 国产亚洲一区二区三区四区| 亚洲国产精品一区二区久久恐怖片 | 欧美电影精品一区二区| 国产精品传媒在线| 国产麻豆视频一区二区| 欧美电影一区二区三区| 亚洲欧美另类久久久精品| 久久av中文字幕片| 欧美日韩一区三区| 亚洲欧洲国产专区| 国产风韵犹存在线视精品| 欧美久久久久久久久| 亚洲免费av观看| 岛国精品一区二区| 久久亚洲一区二区三区四区| 日本中文字幕一区二区视频| 色婷婷综合久久久中文字幕| 中文字幕人成不卡一区| 国产精品中文字幕欧美| 精品国产凹凸成av人网站| 日韩精品一二区| 91精品国产91热久久久做人人| 亚洲综合久久久久| 91网站在线播放| 亚洲精品va在线观看| www.日韩大片| 中文字幕一区二区三区四区| 高清国产午夜精品久久久久久| 久久精品视频网| 成人性生交大合| 国产精品无码永久免费888| 国产一区啦啦啦在线观看| 欧美精品一区二| 国产mv日韩mv欧美| 国产精品美日韩| 91日韩一区二区三区| 亚洲欧美一区二区三区极速播放 | 久久综合久久综合久久综合| 国产麻豆精品一区二区| 久久综合给合久久狠狠狠97色69| 久久精品国产一区二区| 国产三级一区二区| 成人av电影在线观看| 一区在线播放视频| 在线免费精品视频| 爽好多水快深点欧美视频| 日韩欧美aaaaaa| 国产成人午夜视频| 亚洲视频免费在线| 欧美老人xxxx18| 美女www一区二区| 国产精品污污网站在线观看| 在线看国产一区| 天天av天天翘天天综合网 | 亚洲人成网站色在线观看| 欧美日韩在线播放三区四区| 蜜臀国产一区二区三区在线播放| 久久久精品人体av艺术| 99视频一区二区| 天天影视涩香欲综合网| 欧美激情一区三区| 欧美日韩国产片| 国产精品18久久久久久久久久久久| 国产精品国产a| 日韩亚洲欧美一区二区三区| 成人午夜免费视频| 日韩精品亚洲一区二区三区免费| 久久久高清一区二区三区| 99国产一区二区三精品乱码| 肉丝袜脚交视频一区二区| 国产亚洲综合在线| 欧美日韩一卡二卡三卡 | 欧美日韩不卡视频| 国产91富婆露脸刺激对白| 香蕉成人伊视频在线观看| 国产精品情趣视频| 日韩精品中午字幕| 日本精品免费观看高清观看| 国产麻豆精品视频| 日韩av在线播放中文字幕| 自拍偷拍国产亚洲| 久久嫩草精品久久久久| 欧美日韩国产免费一区二区| 成人美女在线视频| 精品一区二区三区香蕉蜜桃 | 337p日本欧洲亚洲大胆精品| 欧美日韩国产一级片| 不卡一区中文字幕| 国内精品国产三级国产a久久| 亚洲成人激情av| 亚洲综合丝袜美腿| 自拍偷拍亚洲综合| 中文在线资源观看网站视频免费不卡 | 中文字幕一区二区三区不卡| 久久亚洲影视婷婷| 精品嫩草影院久久| 日韩欧美在线观看一区二区三区| 91激情五月电影| 91视频在线看| 91在线丨porny丨国产| 成人免费视频视频在线观看免费 | 精品对白一区国产伦| 欧美精品一二三四| 欧美日韩综合色| 欧美日韩激情一区二区三区| 91成人网在线| 欧美色老头old∨ideo| 91麻豆精品一区二区三区| 99视频精品全部免费在线| 波多野结衣在线aⅴ中文字幕不卡| 国产精品一区一区三区| 国产成人综合亚洲91猫咪| 国产成人免费视频一区| 懂色av一区二区三区蜜臀| 成人综合在线观看| 处破女av一区二区| 一本大道久久精品懂色aⅴ| 欧美做爰猛烈大尺度电影无法无天| 99精品国产99久久久久久白柏| 成人av电影在线观看| 91美女在线看| 在线观看免费成人| 欧美精品1区2区| 欧美tickling挠脚心丨vk| 国产亚洲视频系列| 成人免费在线视频| 五月婷婷久久综合| 久草中文综合在线| av一本久道久久综合久久鬼色| 欧美专区亚洲专区| 91精品国产一区二区人妖| 2023国产精品视频| 综合欧美亚洲日本| 五月婷婷综合激情| 国产精品888| 欧美亚洲国产bt| 久久综合色婷婷| 亚洲欧美二区三区| 精品无人区卡一卡二卡三乱码免费卡| 国产米奇在线777精品观看| 91浏览器入口在线观看| 欧美一区日本一区韩国一区| 精品不卡在线视频| 综合在线观看色| 热久久久久久久| 不卡一区二区三区四区| 欧洲精品视频在线观看| 久久久久9999亚洲精品| 亚洲18女电影在线观看| 成人综合激情网| 91精品国产高清一区二区三区蜜臀| 国产亚洲精品久| 午夜电影久久久| 99久久精品国产毛片| 日韩视频国产视频| 亚洲综合999| 粉嫩一区二区三区性色av| 欧美一级高清片在线观看| 最近日韩中文字幕|