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

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

?? word.c

?? 本程序可以對文件進行算術(shù)編碼處理 解碼處理等
?? C
?? 第 1 頁 / 共 2 頁
字號:
/******************************************************************************
File: 		word.c

Authors: 	John Carpinelli   (johnfc@ecr.mu.oz.au)
	 	Wayne Salamonsen  (wbs@mundil.cs.mu.oz.au)

Purpose:	Data compression using a word-based model and revised 
		arithmetic coding method.

Based on: 	A. Moffat, R. Neal, I.H. Witten, "Arithmetic Coding Revisted",
		Proc. IEEE Data Compression Conference, Snowbird, Utah, 
		March 1995.


Copyright 1995 John Carpinelli and Wayne Salamonsen, All Rights Reserved.

These programs are supplied free of charge for research purposes only,
and may not sold or incorporated into any commercial product.  There is
ABSOLUTELY NO WARRANTY of any sort, nor any undertaking that they are
fit for ANY PURPOSE WHATSOEVER.  Use them at your own risk.  If you do
happen to find a bug, or have modifications to suggest, please report
the same to Alistair Moffat, alistair@cs.mu.oz.au.  The copyright
notice above and this statement of conditions must remain an integral
part of each and every copy made of these files.

******************************************************************************/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include "hashtable.h"
#include "stats.h"
#include "coder.h"
#ifdef SYSV
#include <sys/times.h>
#include <limits.h>
#endif

#define ENCODE          0
#define DECODE          1
#define	WORD		0		/* flag to process a word */
#define NON_WORD	1		/* flag to process a non-word */

#define INIT_CONTEXT	1023		/* initial size of word contexts */
#define CHAR_CONTEXT	256		/* length of character contexts */

#define BUFFER_SIZE	512		/* size of file input buffer */
#define MEGABYTE	(1 << 20)	/* size of one megabyte */

#define DEFAULT_MEM	1		/* default 1 megabyte limit */
#define MIN_MBYTES      1	       	/* minimum allowable memory size */
#define MAX_MBYTES      255		/* maximum no for 8 bit int */
#define MAGICNO         "123w"         	/* Magic Number for files */
#define MAGICNO_LENGTH	4		/* length of magic number */


/* Macro to specify what a word is */
#define ISWORD(c) (((c >= 'A') && (c <= 'Z')) || \
                   ((c >= 'a') && (c <= 'z')) || \
                   ((c >= '0') && (c <= '9')))


/* function prototypes */
void init_word_model(hash_table *tables[], context *words[]);
void purge_word_model(hash_table *tables[], context *words[]);
void init_char_model(context *characters[], context *lengths[]);
void encode_file(unsigned char tempstore[], int templength);
void decode_file();
void read_word(char buffer[], int *buffer_length, int *curr_pos, 
	       string *pWord, int type);
void print_results(int operation);


/* global variables */
int mbytes = DEFAULT_MEM; 	/* stores no. megabytes allowable for mem */
int total_memory;		/* total memory used by all models */
int base_memory;	       	/* memory used by character model */
int verbose = 0;		/* flag set if stats are to be printed */
int purge_counter=0;		/* counts number of memory purges */
unsigned int nWords[2]; 	/* counts number of words */
unsigned int nDistinctWords[2];	/* counts number of distinct words */


/* 
 * parse command line arguments. Decide whether to decode or encode
 * and optional memory size. Also sets filename to stdin if none specified 
 */
int 
main(int argc, char *argv[])
{	
    int i;			/* loop counter */
    int what = ENCODE;		/* flag as to whether to encode or decode */
    unsigned char tempstore[MAGICNO_LENGTH];	/* stores magic no */
    int templength = 0;		/* number of bytes read for magic number */
    int	selected = -1;		/* stores if decode set at command line */
    
    /*
     * parse command line arguments. Sets up whether to decode or encode
     * and optional memory limit. Also replaces stdin with input file 
     */
    for (i = 1; i < argc; ) 
    {
	if (argv[i][0] == '-') 
	{
	    switch(argv[i][1]) 
	    {
	      case 'e':		/* do encode */
		selected = ENCODE;
		i++;
		break;
	      case 'd':		/* do decode */
		selected = DECODE;
		i++;
		break;
	      case 'm':		/* set memory size */
		i++;
		mbytes = atoi(argv[i]);
		i++;
		break;
	      case 'v':		/* set verbose flag to print stats */
		verbose = 1;
		i++;
		break;
	      case 'f':		/* set number of F bits */
		i++;
		f_bits = atoi(argv[i]);
		max_frequency = 1<<f_bits;
		i++;
		break;
	      default:		/* incorrect args */
		fprintf(stderr, 
		   "Usage: %s [-e [-m n] | -d] [-v] [-f n] [file]\n", argv[0]);
		exit(1);
	    }
	}
	else if (freopen(argv[i++], "r", stdin) == (FILE *)NULL) 
	{
	    fprintf(stderr, "%s: cannot read %s\n",
		    argv[0], argv[--i]);
	    exit(1);
	}
    }
    
    /* check if memory limit is within allowable range */ 
    if (mbytes < MIN_MBYTES || mbytes > MAX_MBYTES)
    {
	fprintf(stderr, "memory limit must be between %d and %d\n", 
		MIN_MBYTES, MAX_MBYTES);
	exit(1);
    }
    
    /* check if f_bits is within allowable range */
    if (f_bits < MIN_F_BITS || f_bits > MAX_F_BITS)
    {
	fprintf(stderr, "number of f bits must be between %d and %d\n",
		MIN_F_BITS, MAX_F_BITS);
	exit(1);
    }

    /* Check input file for Magic Number. */
    if (selected != ENCODE)
    {
	templength = fread(tempstore, 1, MAGICNO_LENGTH, stdin);
        bytes_input += templength; 
	if (memcmp(tempstore, MAGICNO, MAGICNO_LENGTH) == 0)
	    what = DECODE;
	else if (selected == DECODE)
	{
	    fprintf(stderr, "Bad Magic Number\n");
	    exit(1);
	}
    }
	
    if (what == ENCODE)					/* do ENCODE */
    {
	/* write magic number to output file */
	fwrite(MAGICNO, 1, MAGICNO_LENGTH, stdout);
	bytes_output += MAGICNO_LENGTH;

	/* store memory limit being used in output */
	putc(mbytes, stdout);
	bytes_output += 1;

	/* store number of f_bits being used in output */
	putc(f_bits, stdout);
	bytes_output += 1;

	encode_file(tempstore, templength);
    }
    else						/* do DECODE */
    {
	/* read memory limit to be used and store in mbytes */
	mbytes = getc(stdin);
        bytes_input += 1;
	
	/* get number of f_bits to be used and store in f_bits */
	f_bits = getc(stdin);
	max_frequency = 1<<f_bits;
        bytes_input++;
	decode_file();
    }
    
    /* statistics section if using verbose flag */
    if (verbose)
	print_results(what);
    return 0;			/* exited cleanly */
}


/*
 *
 * print the results of compressing/decompressing a file
 *
 */
void print_results(int operation)
{
    if (operation == ENCODE)
    {
	fprintf(stderr, 
		"                              words           non-words\n");
	fprintf(stderr, "Words read             : %10u          %10u\n", 
		nWords[0], nWords[1]);
	fprintf(stderr, "Distinct words         : %10u          %10u\n",
		nDistinctWords[0], nDistinctWords[1]);
	fprintf(stderr, "Input file size        : %10u bytes\n", bytes_input);
    }
    fprintf(stderr, "Output file size       : %10u bytes\n", bytes_output);
    if (purge_counter != 0)
	fprintf(stderr, "Memory purges          : %10d times\n", purge_counter);
    if ((operation == ENCODE) && (bytes_input > 0))
	fprintf(stderr, "Compression rate       : %10.3f bpc (%0.2f%%) \n", 
		8.0 * bytes_output / bytes_input, 
		(float)bytes_output/bytes_input*100);

    /* only provide timing details if "times" function is available */
#ifdef 	SYSV
{
    struct tms cpu_usage;
    float cpu_used, comp_rate;

    times(&cpu_usage);    	/* determine the cpu time used */
    cpu_used = ((float) cpu_usage.tms_utime) / sysconf(_SC_CLK_TCK);

    if (cpu_used == 0)
	comp_rate = 0;
    else
    {
        if (operation == ENCODE)
	    comp_rate = ((float) bytes_input) / (1024 * cpu_used);
        else
	    comp_rate = ((float) bytes_output) / (1024 * cpu_used);
    }

    fprintf(stderr, "Compression time       : %10.2f seconds (%0.2f Kb/s)\n",
	    cpu_used, comp_rate);
}
#endif
}

/*
 *
 * call the standard C function realloc after checking that the memory
 * limit isn't exceeded. If limit is exceeded return NULL
 *
 */
void 
*do_realloc(void *ptr, size_t size)
{
    total_memory += size;
    if ((total_memory / MEGABYTE) >= mbytes)
	return NULL;
    else
        return (realloc(ptr, size));
}


/*
 *
 * call the standard C function malloc after checking against the memory
 * limit. If the limit is exceeded return NULL

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产精品天堂| 婷婷国产v国产偷v亚洲高清| 91搞黄在线观看| 久久超级碰视频| 亚洲成人免费视频| 中文字幕亚洲综合久久菠萝蜜| 欧美久久久久中文字幕| 91丝袜呻吟高潮美腿白嫩在线观看| 偷窥国产亚洲免费视频| 国产精品国产a级| 久久综合九色综合久久久精品综合 | 国产老女人精品毛片久久| 一区二区理论电影在线观看| 精品国产sm最大网站免费看 | www激情久久| 欧美日韩1区2区| 91亚洲大成网污www| 国产伦精一区二区三区| 三级亚洲高清视频| 亚洲在线视频一区| 日韩伦理电影网| 国产精品美女久久久久高潮| 久久在线观看免费| 欧美一级一区二区| 欧美日韩一级片网站| 色妞www精品视频| 国产a精品视频| 国产精品亚洲人在线观看| 日韩国产精品久久久| 亚洲午夜久久久久中文字幕久| 亚洲欧美日韩国产手机在线 | 亚洲另类色综合网站| 亚洲国产激情av| 国产日韩欧美高清| 国产午夜精品一区二区三区四区| 日韩精品一区二区三区老鸭窝| 91.com在线观看| 在线不卡a资源高清| 欧美性一级生活| 欧美色涩在线第一页| 欧美视频在线一区二区三区| 欧美性生活影院| 欧美日韩国产精选| 欧美日韩视频在线观看一区二区三区 | 中文字幕一区二区三区四区| 亚洲国产精品精华液ab| 国产精品丝袜一区| 亚洲欧美日韩一区| 亚洲国产wwwccc36天堂| 午夜久久福利影院| 久草在线在线精品观看| 久久精品免费看| 国产激情视频一区二区三区欧美| 国产成人午夜99999| 成人av在线播放网址| 色乱码一区二区三区88| 欧美日韩精品一区二区三区| 日韩视频中午一区| 久久日韩精品一区二区五区| 国产欧美一区视频| 亚洲人成网站在线| 亚洲国产精品一区二区久久恐怖片| 日本人妖一区二区| 国产麻豆视频一区| 91影院在线观看| 欧美视频精品在线观看| 日韩欧美的一区| 国产精品不卡在线| 亚洲国产成人av好男人在线观看| 裸体健美xxxx欧美裸体表演| 国产成人av电影在线| 色哟哟精品一区| 日韩一区二区在线看片| 欧美国产精品中文字幕| 亚洲福利视频三区| 国产麻豆精品视频| 日本韩国精品在线| 久久午夜老司机| 一区二区三区资源| 国产综合一区二区| 日本大香伊一区二区三区| 91精品国产aⅴ一区二区| 国产精品污www在线观看| 亚洲一区二区欧美日韩| 国产精品一二三在| 欧美色图激情小说| 国产精品蜜臀av| 日韩av中文字幕一区二区三区| 国产成人a级片| 欧美性淫爽ww久久久久无| 久久久www成人免费毛片麻豆| 亚洲国产毛片aaaaa无费看| 国产成人av电影在线观看| 欧美日韩国产高清一区二区 | 亚洲国产精品ⅴa在线观看| 亚洲成在人线在线播放| 成人久久久精品乱码一区二区三区| 欧美日韩国产电影| 国产精品久久久久影院老司| 美女在线视频一区| 欧美性xxxxxxxx| 国产精品免费aⅴ片在线观看| 麻豆精品新av中文字幕| 精品视频在线免费看| 国产精品不卡一区| 韩国女主播成人在线观看| 欧美高清hd18日本| 亚洲精品成人a在线观看| 成人av网址在线| 久久先锋资源网| 久久精品噜噜噜成人av农村| 欧美日韩精品电影| 亚洲自拍与偷拍| 99re热视频这里只精品| 国产亚洲成av人在线观看导航| 日韩电影在线免费看| 91福利国产成人精品照片| 国产精品免费丝袜| 国产乱妇无码大片在线观看| 欧美一区二区日韩| 亚洲国产成人av| 欧美日韩一卡二卡| 亚洲成人一二三| 欧美三电影在线| 亚洲尤物视频在线| 色视频一区二区| 夜夜嗨av一区二区三区| 91免费看片在线观看| 国产精品久久久久久久久久久免费看| 国产麻豆精品theporn| 亚洲精品一区二区三区影院 | 亚洲午夜一区二区三区| 成人一二三区视频| 久久精品综合网| 成人午夜av影视| 中文字幕一区二区三区不卡在线| 成人看片黄a免费看在线| 中文字幕一区二区三区四区| 96av麻豆蜜桃一区二区| 中文字幕一区二区三区不卡 | 在线欧美日韩国产| 亚洲一级不卡视频| 777久久久精品| 蜜臀av一区二区| 亚洲精品一区二区三区蜜桃下载| 国产一区二区剧情av在线| 中文字幕成人av| 99re视频这里只有精品| 一区二区免费在线播放| 91精品国产综合久久久久久 | 亚洲欧洲精品一区二区三区| av不卡免费在线观看| 一区二区三区四区国产精品| 欧美日韩午夜影院| 看电影不卡的网站| 亚洲国产精品成人综合| 色噜噜狠狠成人网p站| 午夜伦欧美伦电影理论片| 欧美成人video| 成人av网站在线观看免费| 亚洲夂夂婷婷色拍ww47| 欧美成人国产一区二区| 成人网页在线观看| 亚洲一区二区三区小说| 精品伦理精品一区| a4yy欧美一区二区三区| 亚洲成a人v欧美综合天堂下载| 欧美成人video| 91在线小视频| 日本三级亚洲精品| 亚洲国产精品成人综合| 欧美日韩国产不卡| 国产精品一区二区视频| 一区二区三区在线视频播放| 4438x亚洲最大成人网| 国产传媒一区在线| 亚洲国产sm捆绑调教视频| 久久精品欧美一区二区三区麻豆| av亚洲精华国产精华| 免费成人小视频| 中文字幕日韩一区二区| 91精品国产欧美一区二区| 成人小视频在线观看| 首页国产欧美久久| 国产精品成人免费在线| 日韩免费在线观看| 一本到不卡精品视频在线观看| 激情图片小说一区| 亚洲国产成人av| 中文字幕在线不卡一区| 国产午夜亚洲精品午夜鲁丝片| 欧美日韩精品一区二区| 99免费精品视频| 久久99国产精品免费网站| 一区二区在线电影| 久久久久高清精品| 欧美精品1区2区3区| 99精品偷自拍| 国产一区二区电影| 五月婷婷激情综合|