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

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

光子vs电子



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

5come5帮你背单词 [ yeast /ji:st/ 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帮你背单词 [ we /wi:/ pron. 我们 ]


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



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

5come5帮你背单词 [ undoubtedly /Λn'dautidli/ ad. 不容置疑地,肯定地 ]


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

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



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

5come5帮你背单词 [ trample /'træmpl/ vt. 践踏,毁坏,伤害 ]


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



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

5come5帮你背单词 [ atmosphere /'ætməsfiə/ 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帮你背单词 [ advent /'ædvənt/ n. 出现,到来 ]


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



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

5come5帮你背单词 [ parent /'p/ərənt/ n. 父亲,母亲,动(植)物的母体,起源,根本 ]


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帮你背单词 [ trespass /'trespəs/ v. 侵犯,闯入私人领地 vi. 非法侵入,侵占 ]


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



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

5come5帮你背单词 [ harsh /ha:/ a. 粗糙的,(声音)刺耳的,(味道)涩口的,(光)刺目的,苛刻的,严酷的 ]


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帮你背单词 [ probable /'probəbl/ a. 很可能的,大概会的,有希望的,有可能是真实的 ]


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帮你背单词 [ motion /'məuən/ n. 移动,运动,手势,举动,(会上)提议;v. 打手势,示意 ]


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

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



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

5come5帮你背单词 [ democratic /demə'krætik/ a. 民主政体的,民主作风的,民众的 ]


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帮你背单词 [ secret /'si:krit/ a. 秘密的;n. 秘密,秘诀 ]


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

Total 0.026853(s) query 7, Time now is:04-28 00:30, Gzip enabled
Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号