我来我网
https://5come5.cn
 
您尚未 登录  注册 | 菠菜 | 软件站 | 音乐站 | 邮箱1 | 邮箱2 | 风格选择 | 更多 » 
 

本页主题: 还是同一段程序 显示签名 | 打印 | 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

光子vs电子



性别: 帅哥 状态: 该用户目前不在线
头衔: 程序小白
等级: 人见人爱
家族: YD一族
发贴: 3379
威望: 0
浮云: 0
在线等级:
注册时间: 2007-04-29
最后登陆: 2022-12-09

5come5帮你背单词 [ drawing /'dro:iŋ/ n. 图画,素描(画) ]


还是同一段程序

void CCompressDlg::FileCompress()
{
    int i,j;
    BYTE ch=0,buffer[2];
    unsigned char vanl[3],tch,R_van=0;
    WORD *p1;
    int remain=0,byte_num=0;
    fseek(fout,12L,0);//预留表头
   
    for(i=0;i<f_head.SourceSignalNum;i++)//写码表
    {
        fwrite(&f_table.SourceSignal_CodeLength,1,1,fout);//дÈëÂë±í
        fwrite(&f_table.CodeBits,2,1,fout);   
    }
    f_head.hfSize=12;
    while(!feof(fp))
    {
        //读文件
        //编写文件
        p1=(WORD*)(&vanl[0]);
        buffer[0]=fgetc(fp);
        buffer[1]=buffer[0]&0x0F;//buffer[1] lower 4 bits
        buffer[0]>>=4;//buffer[0] higher 4 bits
        for(i=0;i<2;i++)
        {
            ch=buffer;
            *p1=temp_table[ch].HCode;
            byte_num=((int)temp_table[ch].length+remain)/8;
            p1=*p1<<(8-remain)这句是做什么的?
            tch=vanl[1];
            tch=tch>>remain;
            vanl[2]=tch|R_van;
            for(j=0;j<byte_num;j++)
            {
               fwrite(&vanl[2-j],1,1,fout);
                f_head.hfSize++;
            }
            R_van=vanl[2-j];
            remain=(temp_table[ch].length+remain) % 8;

        }
    }
其中temp_table[ch].HCode;是读入编码对应的霍夫曼编码,主要是while循环内部看不懂,
就这么段代码,看了几小时了,求达人给出详细解释,快崩溃球
顶端 Posted: 2008-04-11 17:48 | [楼 主]
冷漠



性别: 美女 状态: 该用户目前不在线
头衔: 我是冷莫的妹妹!!
等级: 品行端正
发贴: 245
威望: 0
浮云: 1206
在线等级:
注册时间: 2007-05-30
最后登陆: 2008-06-27

5come5帮你背单词 [ regular /'regjulə/ a. 定期的,有规律的,正规的,正式的,匀称的,整齐的 ]


是不是哪个创新学分的课哦?
顶端 Posted: 2008-04-11 17:50 | [1 楼]
光子vs电子



性别: 帅哥 状态: 该用户目前不在线
头衔: 程序小白
等级: 人见人爱
家族: YD一族
发贴: 3379
威望: 0
浮云: 0
在线等级:
注册时间: 2007-04-29
最后登陆: 2022-12-09

5come5帮你背单词 [ landlord /'lændlo:d/ n. 地主,房东 ]


Quote:
引用第1楼冷漠于2008-04-11 17:50发表的  :
是不是哪个创新学分的课哦?

是的,不过不是我选的,帮同学做的,没去听课,结果。。。惭愧啊
顶端 Posted: 2008-04-11 17:54 | [2 楼]
笨人



性别: 帅哥 状态: 该用户目前不在线
等级: 鹤立鸡群
发贴: 1178
威望: 0
浮云: 1698
在线等级:
注册时间: 2007-09-07
最后登陆: 2008-06-28

5come5帮你背单词 [ excuse /iks'kju:z, iks'kju:s/ vt. 原谅,宽恕,免除(某人的)责任;借口,理由 ]


现在正在学啊
顶端 Posted: 2008-04-11 17:55 | [3 楼]
光子vs电子



性别: 帅哥 状态: 该用户目前不在线
头衔: 程序小白
等级: 人见人爱
家族: YD一族
发贴: 3379
威望: 0
浮云: 0
在线等级:
注册时间: 2007-04-29
最后登陆: 2022-12-09

5come5帮你背单词 [ coin /koin/ n. 硬币 ]


Quote:
引用第3楼笨人于2008-04-11 17:55发表的  :
现在正在学啊

我还是在学习啊,面临崩溃
顶端 Posted: 2008-04-11 17:58 | [4 楼]
冷漠



性别: 美女 状态: 该用户目前不在线
头衔: 我是冷莫的妹妹!!
等级: 品行端正
发贴: 245
威望: 0
浮云: 1206
在线等级:
注册时间: 2007-05-30
最后登陆: 2008-06-27

5come5帮你背单词 [ retarded // a. 智力上迟纯的 ]


最后一次课,老师要拿正确答案讲的,表急哈
顶端 Posted: 2008-04-11 18:09 | [5 楼]
光子vs电子



性别: 帅哥 状态: 该用户目前不在线
头衔: 程序小白
等级: 人见人爱
家族: YD一族
发贴: 3379
威望: 0
浮云: 0
在线等级:
注册时间: 2007-04-29
最后登陆: 2022-12-09

5come5帮你背单词 [ none /nΛn/ pron. 没有一个,无一;ad. 一点也不 ]


Quote:
引用第5楼冷漠于2008-04-11 18:09发表的  :
最后一次课,老师要拿正确答案讲的,表急哈

什么时候上课?不把这个弄懂今晚就别想睡觉了。
顶端 Posted: 2008-04-11 18:12 | [6 楼]
wangfan





性别: 帅哥 状态: 该用户目前不在线
等级: 栋梁之材
发贴: 915
威望: 0
浮云: 1147
在线等级:
注册时间: 2007-09-10
最后登陆: 2010-05-25

5come5帮你背单词 [ wife /waif/ n. 妻子,夫人,太太 ]


好像很简单啊,没细看,不就C的一点东西吗?
顶端 Posted: 2008-04-11 18:42 | [7 楼]
光子vs电子



性别: 帅哥 状态: 该用户目前不在线
头衔: 程序小白
等级: 人见人爱
家族: YD一族
发贴: 3379
威望: 0
浮云: 0
在线等级:
注册时间: 2007-04-29
最后登陆: 2022-12-09

5come5帮你背单词 [ prosperity /pros'periti/ n. 繁荣,兴旺 ]


Quote:
引用第7楼wangfan于2008-04-11 18:42发表的  :
好像很简单啊,没细看,不就C的一点东西吗?

我也知道很简单,但我就是看不懂
顶端 Posted: 2008-04-11 19:59 | [8 楼]
路客与刀客



性别: 帅哥 状态: 该用户目前不在线
等级: 希望之光
家族: 梦魇图腾
发贴: 1980
威望: 0
浮云: 1186
在线等级:
注册时间: 2007-01-02
最后登陆: 2008-06-29

5come5帮你背单词 [ consequence /'konsikwəns/ n. 结果,后果 ]


Quote:

p1=*p1<<(8-remain)这句是做什么的?

这句弄错了吧,我想应该是下面这样才对的,就是*p1的值左移(8-remain)位然后赋给*p1相当于*p1=<<(8-remain),你自己看看。
Quote:

*p1=*p1<<(8-remain)
顶端 Posted: 2008-04-11 20:27 | [9 楼]
光子vs电子



性别: 帅哥 状态: 该用户目前不在线
头衔: 程序小白
等级: 人见人爱
家族: YD一族
发贴: 3379
威望: 0
浮云: 0
在线等级:
注册时间: 2007-04-29
最后登陆: 2022-12-09

5come5帮你背单词 [ failure /'feiljə/ n. 失败,失灵,故障,失败的人或事,没做到,不履行 ]


Quote:
引用第9楼路客与刀客于2008-04-11 20:27发表的  :

这个了解,关键这个有嘛用,去掉这句程序运行没问题,但为什么会有这句?
顶端 Posted: 2008-04-11 20:29 | [10 楼]
路客与刀客



性别: 帅哥 状态: 该用户目前不在线
等级: 希望之光
家族: 梦魇图腾
发贴: 1980
威望: 0
浮云: 1186
在线等级:
注册时间: 2007-01-02
最后登陆: 2008-06-29

5come5帮你背单词 [ embarrass /im'bærəs/ vt. 使窘迫,使为难 ]


Quote:
引用第10楼光子vs电子于2008-04-11 20:29发表的  :

这个了解,关键这个有嘛用,去掉这句程序运行没问题,但为什么会有这句?


我想他移位是为了凑够一个字节,比如说某个信源符号对应的Huffman编码是3位的,但是他不可能把这3位放到一个字节里面,然后就写到文件里面去。这样的话事压缩不了的,因为所有对文件进行操作的函数的最小单位是按字节读写文件,不管实际上写到文件里面的那个字节有多少位是有效的,也同样会占一个字节的空间,所以这样做是为了把不足8位(一个字节)的编码组装起来成一个字节,把超出8位的编码的剩余的部分放到下一个字节,一直到最后。不过转一个字节就写一个字节的方式很不好,因为这样写磁盘的次数会很多,而磁盘的读写速度却不高,如此写会降低运行效率,因此建议使用缓存。不过传言fwrite函数写的是文件字节流,如果是这样就无所谓了,但如果是CFile::Write()函数的话就必须用缓存了,否则会很慢。
顶端 Posted: 2008-04-11 21:23 | [11 楼]
光子vs电子



性别: 帅哥 状态: 该用户目前不在线
头衔: 程序小白
等级: 人见人爱
家族: YD一族
发贴: 3379
威望: 0
浮云: 0
在线等级:
注册时间: 2007-04-29
最后登陆: 2022-12-09

5come5帮你背单词 [ torch /to:t/ n. 手电筒,火炬,火把 ]


终于整明白了,看来是对指针和位移运算符理解不到位,人家左移后是把数据放在了相邻存储单元,而不是清除,神啊,我是瓜的
顶端 Posted: 2008-04-11 23:15 | [12 楼]
我来我网·5come5 Forum » 程序员之家

Total 0.011603(s) query 5, Time now is:11-24 18:10, Gzip enabled
Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号