| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4445 人关注过本帖
标题:如何实现对字符串的算术编码压缩
只看楼主 加入收藏
abc402934874
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-5-26
收藏
 问题点数:0 回复次数:6 
如何实现对字符串的算术编码压缩
char* getAllFileData(char*name)
{
    FILE *fp;  
    char *str;  
    char buffer[4096];  
    int filesize;  
    if ((fp=fopen(name,"r"))==NULL){  
        printf("打开文件%s错误 error=%s \n",name,strerror(errno));  
        return NULL;  
    }  
  
    fseek(fp,0,SEEK_END);  
    filesize = ftell(fp);  
    str=(char *)malloc(filesize+1);  
    memset(str,0,filesize+1);  
    rewind(fp);  
    int bufsize=sizeof(buffer);  
    //fgets函数成功将返回buf,失败或读到文件结尾返回NULL。因此我们不能直接通过fgets的返回值来判断函数是否是出错而终止的,应该借助feof函数或者ferror函数来判断。  
    while(!feof(fp)){  
        fgets(buffer,bufsize,fp);  
        strcat(str,buffer);  
    }  
    fclose(fp);  
    return str;  
}  这一段实现了对文本文件的读取。
后续如何对读取出的字符串进行算术编码压缩?有木有大手子懂得 求解!
搜索更多相关主题的帖子: return 字符串 如何 
2017-05-26 15:02
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
这个是按字符概率分布表来处理。
2017-05-26 16:39
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 2楼 吹水佬
这不是哈夫曼编码压缩么?~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-05-26 18:03
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
以下是引用九转星河在2017-5-26 18:03:39的发言:

这不是哈夫曼编码压缩么?~

编码处理过程不同。哈夫曼编码用整数个二进制位进行编码;算术编码用一个介于0和1之间的二进制小数编码。
2017-05-26 22:57
abc402934874
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-5-26
收藏
得分:0 
回复 2楼 吹水佬
那我不清楚其中的字符概率能用算术编码压缩吗 我看了一些用c++的 都需要知道字符出现概率来进行压缩
2017-05-27 13:47
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
以下是引用abc402934874在2017-5-27 13:47:47的发言:

那我不清楚其中的字符概率能用算术编码压缩吗 我看了一些用c++的 都需要知道字符出现概率来进行压缩

“字符出现概率”是按每次出现时字符概率分布区域来处理,说来话长,难以言语表达。
看看“算术编码”算法应该会明白,“算术编码”算法不难理解。
2017-05-28 07:13
abc402934874
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-5-26
收藏
得分:0 
以下是引用吹水佬在2017-5-28 07:13:43的发言:


“字符出现概率”是按每次出现时字符概率分布区域来处理,说来话长,难以言语表达。
看看“算术编码”算法应该会明白,“算术编码”算法不难理解。

谢谢 已经弄明白了
2017-05-29 11:26
快速回复:如何实现对字符串的算术编码压缩
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032153 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved