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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? blast.c

?? 一款用來(lái)進(jìn)行網(wǎng)絡(luò)模擬的軟件
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/* blast.c * Copyright (C) 2003 Mark Adler * For conditions of distribution and use, see copyright notice in blast.h * version 1.1, 16 Feb 2003 * * blast.c decompresses data compressed by the PKWare Compression Library. * This function provides functionality similar to the explode() function of * the PKWare library, hence the name "blast". * * This decompressor is based on the excellent format description provided by * Ben Rudiak-Gould in comp.compression on August 13, 2001.  Interestingly, the * example Ben provided in the post is incorrect.  The distance 110001 should * instead be 111000.  When corrected, the example byte stream becomes: * *    00 04 82 24 25 8f 80 7f * * which decompresses to "AIAIAIAIAIAIA" (without the quotes). *//* * Change history: * * 1.0  12 Feb 2003     - First version * 1.1  16 Feb 2003     - Fixed distance check for > 4 GB uncompressed data */#include <setjmp.h>             /* for setjmp(), longjmp(), and jmp_buf */#include "blast.h"              /* prototype for blast() */#define local static            /* for local function definitions */#define MAXBITS 13              /* maximum code length */#define MAXWIN 4096             /* maximum window size *//* input and output state */struct state {    /* input state */    blast_in infun;             /* input function provided by user */    void *inhow;                /* opaque information passed to infun() */    unsigned char *in;          /* next input location */    unsigned left;              /* available input at in */    int bitbuf;                 /* bit buffer */    int bitcnt;                 /* number of bits in bit buffer */    /* input limit error return state for bits() and decode() */    jmp_buf env;    /* output state */    blast_out outfun;           /* output function provided by user */    void *outhow;               /* opaque information passed to outfun() */    unsigned next;              /* index of next write location in out[] */    int first;                  /* true to check distances (for first 4K) */    unsigned char out[MAXWIN];  /* output buffer and sliding window */};/* * Return need bits from the input stream.  This always leaves less than * eight bits in the buffer.  bits() works properly for need == 0. * * Format notes: * * - Bits are stored in bytes from the least significant bit to the most *   significant bit.  Therefore bits are dropped from the bottom of the bit *   buffer, using shift right, and new bytes are appended to the top of the *   bit buffer, using shift left. */local int bits(struct state *s, int need){    int val;            /* bit accumulator */    /* load at least need bits into val */    val = s->bitbuf;    while (s->bitcnt < need) {        if (s->left == 0) {            s->left = s->infun(s->inhow, &(s->in));            if (s->left == 0) longjmp(s->env, 1);       /* out of input */        }        val |= (int)(*(s->in)++) << s->bitcnt;          /* load eight bits */        s->left--;        s->bitcnt += 8;    }    /* drop need bits and update buffer, always zero to seven bits left */    s->bitbuf = val >> need;    s->bitcnt -= need;    /* return need bits, zeroing the bits above that */    return val & ((1 << need) - 1);}/* * Huffman code decoding tables.  count[1..MAXBITS] is the number of symbols of * each length, which for a canonical code are stepped through in order. * symbol[] are the symbol values in canonical order, where the number of * entries is the sum of the counts in count[].  The decoding process can be * seen in the function decode() below. */struct huffman {    short *count;       /* number of symbols of each length */    short *symbol;      /* canonically ordered symbols */};/* * Decode a code from the stream s using huffman table h.  Return the symbol or * a negative value if there is an error.  If all of the lengths are zero, i.e. * an empty code, or if the code is incomplete and an invalid code is received, * then -9 is returned after reading MAXBITS bits. * * Format notes: * * - The codes as stored in the compressed data are bit-reversed relative to *   a simple integer ordering of codes of the same lengths.  Hence below the *   bits are pulled from the compressed data one at a time and used to *   build the code value reversed from what is in the stream in order to *   permit simple integer comparisons for decoding. * * - The first code for the shortest length is all ones.  Subsequent codes of *   the same length are simply integer decrements of the previous code.  When *   moving up a length, a one bit is appended to the code.  For a complete *   code, the last code of the longest length will be all zeros.  To support *   this ordering, the bits pulled during decoding are inverted to apply the *   more "natural" ordering starting with all zeros and incrementing. */local int decode(struct state *s, struct huffman *h){    int len;            /* current number of bits in code */    int code;           /* len bits being decoded */    int first;          /* first code of length len */    int count;          /* number of codes of length len */    int index;          /* index of first code of length len in symbol table */    int bitbuf;         /* bits from stream */    int left;           /* bits left in next or left to process */    short *next;        /* next number of codes */    bitbuf = s->bitbuf;    left = s->bitcnt;    code = first = index = 0;    len = 1;    next = h->count + 1;    while (1) {        while (left--) {            code |= (bitbuf & 1) ^ 1;   /* invert code */            bitbuf >>= 1;            count = *next++;            if (code < first + count) { /* if length len, return symbol */                s->bitbuf = bitbuf;                s->bitcnt = (s->bitcnt - len) & 7;                return h->symbol[index + (code - first)];            }            index += count;             /* else update for next length */            first += count;            first <<= 1;            code <<= 1;            len++;        }        left = (MAXBITS+1) - len;        if (left == 0) break;        if (s->left == 0) {            s->left = s->infun(s->inhow, &(s->in));            if (s->left == 0) longjmp(s->env, 1);       /* out of input */        }        bitbuf = *(s->in)++;        s->left--;        if (left > 8) left = 8;    }    return -9;                          /* ran out of codes */}/* * Given a list of repeated code lengths rep[0..n-1], where each byte is a * count (high four bits + 1) and a code length (low four bits), generate the * list of code lengths.  This compaction reduces the size of the object code. * Then given the list of code lengths length[0..n-1] representing a canonical * Huffman code for n symbols, construct the tables required to decode those * codes.  Those tables are the number of codes of each length, and the symbols * sorted by length, retaining their original order within each length.  The * return value is zero for a complete code set, negative for an over- * subscribed code set, and positive for an incomplete code set.  The tables * can be used if the return value is zero or positive, but they cannot be used * if the return value is negative.  If the return value is zero, it is not * possible for decode() using that table to return an error--any stream of * enough bits will resolve to a symbol.  If the return value is positive, then * it is possible for decode() using that table to return an error for received * codes past the end of the incomplete lengths. */local int construct(struct huffman *h, const unsigned char *rep, int n){    int symbol;         /* current symbol when stepping through length[] */    int len;            /* current length when stepping through h->count[] */    int left;           /* number of possible codes left of current length */    short offs[MAXBITS+1];      /* offsets in symbol table for each length */    short length[256];  /* code lengths */    /* convert compact repeat counts into symbol bit length list */    symbol = 0;    do {        len = *rep++;        left = (len >> 4) + 1;        len &= 15;        do {            length[symbol++] = len;        } while (--left);    } while (--n);    n = symbol;    /* count number of codes of each length */    for (len = 0; len <= MAXBITS; len++)        h->count[len] = 0;    for (symbol = 0; symbol < n; symbol++)        (h->count[length[symbol]])++;   /* assumes lengths are within bounds */    if (h->count[0] == n)               /* no codes! */        return 0;                       /* complete, but decode() will fail */    /* check for an over-subscribed or incomplete set of lengths */    left = 1;                           /* one possible code of zero length */    for (len = 1; len <= MAXBITS; len++) {        left <<= 1;                     /* one more bit, double codes left */        left -= h->count[len];          /* deduct count from possible codes */        if (left < 0) return left;      /* over-subscribed--return negative */    }                                   /* left > 0 means incomplete */    /* generate offsets into symbol table for each length for sorting */    offs[1] = 0;    for (len = 1; len < MAXBITS; len++)

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人网在线播放| www.成人在线| hitomi一区二区三区精品| 欧美日韩中文精品| 国产日韩欧美激情| 视频一区免费在线观看| jizzjizzjizz欧美| 久久久www成人免费毛片麻豆| 一区二区三区在线视频免费| 国产成人免费视频一区| 91精品国产色综合久久不卡蜜臀| 久久精品欧美日韩精品| 奇米精品一区二区三区四区| 99精品在线免费| 精品福利在线导航| 丝袜亚洲另类丝袜在线| 欧洲国产伦久久久久久久| 国产精品久久久久久久久图文区| 国内精品伊人久久久久av影院 | 亚洲第四色夜色| 91丨九色丨尤物| 欧美—级在线免费片| 国产一区免费电影| 欧美成人一区二区三区在线观看| 五月开心婷婷久久| 欧美综合色免费| 亚洲一区在线看| 欧美特级限制片免费在线观看| 亚洲精品一二三区| 91亚洲精品乱码久久久久久蜜桃| 国产精品免费观看视频| 成人黄色av电影| 国产精品日日摸夜夜摸av| 国产成人精品免费网站| 日本一区二区视频在线观看| 国产成人啪免费观看软件| 久久精品人人做| 日韩亚洲欧美成人一区| 三级在线观看一区二区| 日韩一区二区免费在线电影| 日本欧美久久久久免费播放网| 91精品国产色综合久久ai换脸 | 国产精品色在线观看| 岛国精品在线观看| 亚洲欧美自拍偷拍色图| 91小宝寻花一区二区三区| 夜夜嗨av一区二区三区四季av| 一本大道av一区二区在线播放| 一区二区三区在线视频免费观看| 91久久精品一区二区三| 亚洲国产视频一区| 91精品国产综合久久福利 | 在线成人av影院| 久久精品国产99国产精品| 久久新电视剧免费观看| 成人免费看的视频| 亚洲一卡二卡三卡四卡五卡| 91精品欧美久久久久久动漫| 精品一区二区三区在线视频| 中文久久乱码一区二区| 在线亚洲欧美专区二区| 免费欧美在线视频| 国产精品初高中害羞小美女文| 在线观看日韩一区| 九九**精品视频免费播放| 成人免费在线视频| 91精品国产综合久久久久久久 | 久久久久久久久久久久久久久99| 成人av电影在线播放| 五月婷婷激情综合网| 久久久久久久久99精品| 欧洲精品在线观看| 国产精品亚洲а∨天堂免在线| 亚洲欧美另类小说| 精品国产成人在线影院| 色狠狠一区二区| 国产一区二三区| 一区二区三区在线视频播放| 久久人人爽爽爽人久久久| 色狠狠综合天天综合综合| 国产酒店精品激情| 亚洲午夜久久久久久久久久久| 久久综合久久综合亚洲| 欧美色视频一区| 成年人网站91| 久久爱另类一区二区小说| 亚洲综合小说图片| 国产精品嫩草99a| 日韩三级在线免费观看| 在线视频观看一区| av在线不卡电影| 激情六月婷婷综合| 日韩电影免费在线看| 伊人色综合久久天天人手人婷| 久久久精品蜜桃| 欧美一级在线免费| 欧美视频精品在线观看| 91美女片黄在线观看| 丁香啪啪综合成人亚洲小说| 免费观看日韩av| 亚洲国产精品欧美一二99| 亚洲色图一区二区三区| 亚洲国产精品黑人久久久| 26uuuu精品一区二区| 51午夜精品国产| 欧美日韩精品一二三区| 欧日韩精品视频| 91福利国产成人精品照片| 成年人午夜久久久| 99久久久国产精品免费蜜臀| 国产精品18久久久久久vr| 韩国女主播一区| 国产一区二区三区四| 国产一区二区看久久| 激情五月播播久久久精品| 激情欧美一区二区三区在线观看| 免费在线观看日韩欧美| 另类小说图片综合网| 久久国产夜色精品鲁鲁99| 毛片一区二区三区| 国内精品久久久久影院薰衣草| 看片的网站亚洲| 国产一区二区三区四区五区美女| 韩国毛片一区二区三区| 国产+成+人+亚洲欧洲自线| 国产高清久久久| 成人午夜又粗又硬又大| 色综合婷婷久久| 欧美日韩国产综合一区二区| 欧美亚洲免费在线一区| 在线电影院国产精品| 日韩欧美亚洲另类制服综合在线| 欧美v亚洲v综合ⅴ国产v| 久久久久国产一区二区三区四区 | 毛片不卡一区二区| 国产在线不卡一区| 成人精品视频.| 色视频一区二区| 欧美妇女性影城| 久久精品一二三| 亚洲精品免费一二三区| 天堂va蜜桃一区二区三区漫画版| 久久国产麻豆精品| 波多野结衣中文一区| 欧美日韩亚洲国产综合| 久久综合狠狠综合久久激情| 国产精品天干天干在观线| 亚洲自拍另类综合| 玖玖九九国产精品| 不卡影院免费观看| 欧美日本一区二区在线观看| 久久精品欧美一区二区三区麻豆| 亚洲精品亚洲人成人网在线播放| 免费欧美在线视频| av在线综合网| 精品美女被调教视频大全网站| 欧美极品少妇xxxxⅹ高跟鞋| 午夜伊人狠狠久久| 成人激情小说网站| 91精品麻豆日日躁夜夜躁| 国产精品的网站| 免费看日韩a级影片| 91免费版在线看| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 成人涩涩免费视频| 欧美高清视频一二三区| 国产精品久久午夜| 美女视频网站久久| 日本精品裸体写真集在线观看| 精品国产免费人成在线观看| 亚洲国产欧美在线| 国产成人在线网站| 精品少妇一区二区三区在线视频| 亚洲美女屁股眼交| 成人精品视频一区二区三区| 91精品国产综合久久久久| 亚洲欧美激情视频在线观看一区二区三区| 九九**精品视频免费播放| 欧美日韩高清一区二区不卡| 综合久久综合久久| 丰满岳乱妇一区二区三区| 日韩午夜在线观看视频| 亚洲成av人片在线观看| 99久久精品一区| 中文字幕一区二区三区精华液 | 成人高清视频免费观看| 精品国产91九色蝌蚪| 蜜臀av性久久久久av蜜臀妖精| 在线观看免费视频综合| 亚洲天堂久久久久久久| 成人av集中营| 中文天堂在线一区| 国产成人99久久亚洲综合精品| 欧美www视频| 极品少妇xxxx偷拍精品少妇| 日韩欧美国产精品| 天天色天天爱天天射综合| 欧美日本精品一区二区三区| 亚洲国产欧美在线| 777奇米四色成人影色区|