设为首页 加入收藏

TOP

数据压缩算法---LZ77算法 的分析与实现(四)
2018-08-06 10:54:52 】 浏览:559
Tags:数据 压缩 算法 ---LZ77 分析 实现
bsp; buffer[LZ77_BUFFER_SIZE],
                      *comp,
                      *temp,
                      next;
    int              offset,
                      length,
                      remaining,
                      hsize,
                      ipos,
                      opos,
                      tpos,
                      i;
    /*使指向压缩数据的指针暂时无效*/
    *compressed = NULL;


    /*写入头部信息*/
    hsize = sizeof(int);
    if((comp = (unsigned char *)malloc(hsize)) == NULL)
        return -1;
    memcpy(comp,&size,sizeof(int));


    /*初始化滑动窗口和前向缓冲区(用0填充)*/
    memset(window, 0 , LZ77_WINDOW_SIZE);
    memset(buffer, 0 , LZ77_BUFFER_SIZE);


    /*加载前向缓冲区*/
    ipos = 0;


    for(i=0; i<LZ77_BUFFER_SIZE && ipos < size; i++)
    {
        buffer[i] = original[ipos];
        ipos++;
    }


    /*压缩数据*/
    opos = hsize * 8;
    remaining = size;


    while(remaining > 0)
    {
        if((length = compare_win(window,buffer,&offset,&next)) != 0)
        {
            /*编码短语标记*/
            token = 0x00000001 << (LZ77_PHRASE_BITS - 1);


            /*设置在滑动窗口找到匹配的偏移量*/
            token = token | (offset << (LZ77_PHRASE_BITS - LZ77_TYPE_BITS - LZ77_WINOFF_BITS));


            /*设置匹配串的长度*/
            token = token | (length << (LZ77_PHRASE_BITS - LZ77_TYPE_BITS - LZ77_WINOFF_BITS - LZ77_BUFLEN_BITS));


            /*设置前向缓冲区中匹配串后面紧邻的字符*/
            token = token | next;


            /*设置标记的位数*/
            tbits = LZ77_PHRASE_BITS;
        }
        else
        {
            /*编码一个字符标记*/
            token = 0x00000000;


            /*设置未匹配的字符*/
            token = token | next;


            /*设置标记的位数*/
            tbits = LZ77_SYMBOL_BITS;
        }


        /*确定标记是大端格式*/
        token = htonl(token);


        /*将标记写入压缩缓冲区*/
        for(i=0; i<tbits; i++)
        {
            if(opos % 8 == 0)
       

首页 上一页 1 2 3 4 5 6 7 下一页 尾页 4/7/7
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇数据加密算法的简介与应用 下一篇数据压缩算法---霍夫曼编码的分析..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目