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

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

光子vs电子



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

5come5帮你背单词 [ prospect /'prospekt, prəs'pekt/ 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帮你背单词 [ motive /'məutiv/ n. 动机,目的,(作品的)主题 ]


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



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

5come5帮你背单词 [ driver /'draivə/ 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帮你背单词 [ punish /'pΛni/ v. 处罚,惩罚 ]


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



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

5come5帮你背单词 [ rainy /'reini/ a. 下雨的,多雨的 ]


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

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



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

5come5帮你背单词 [ surname /'sə:neim/ n. 姓 ]


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



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

5come5帮你背单词 [ tell /tel/ vt. 讲,告诉,告诫,劝告,命令,指示,辨别,分辨 ]


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帮你背单词 [ communicate /kə'mju:nikeit/ vt. 交际,交流(思想等),传达,传送,通讯,通信 ]


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



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

5come5帮你背单词 [ interact /intə'rækt/ 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帮你背单词 [ album /'ælbəm/ 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帮你背单词 [ asia /'eiə/ 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帮你背单词 [ trot /trot/ vi. 小跑,快步走 ]


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帮你背单词 [ steak /'steik/ n. 牛排 ]


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

Total 0.011636(s) query 5, Time now is:11-22 04:14, Gzip enabled
Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号