首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

关于读取二进制文件的有关问题

2012-02-24 
关于读取二进制文件的问题本人今天编写了一个关于二进制读取的程序,可是将读取的数据显示出来后发现都是写

关于读取二进制文件的问题
本人今天编写了一个关于二进制读取的程序,可是将读取的数据显示出来后发现都是写十六进制数,请问各位高手,我应该怎样将数据变成二进制的数据呢,越详细越好,我在这里先谢过回帖的各位高手,程序原代码如下:
        CString   tmp,x;
        char   ch;
        FILE*   fp;
        fp=fopen( "c:\\2.jpg ",   "rb ");
        while(!feof(fp))
{
                ch=fgetc(fp);
                tmp.Format( "%02x ",(unsigned   char)ch);
                x+=tmp;
}
        fclose(fp);
        text1=x;
        UpdateData(false);

[解决办法]
x本来就是格式化成16进制的啊。
[解决办法]
lz 说的是什么问题啊
不是己经把2.jpg 给 "rb " 读了吗?
[解决办法]
Mackz(在相互)说的对啊,X就是显示成16进制嘛,而且貌似没有直接显示成二进制的东东。
自己写啦。
[解决办法]

[解决办法]
lz说的二进制显示是用 010001101101010 这样来显示你的图片?
如果不是,可以用下面2个试试

tmp.Format( "%02d ",(unsigned char)ch);
tmp.Format( "%c ",(unsigned char)ch);

[解决办法]
应该没有直接输出2进制的格式
tmp.Format( "%02x ",(unsigned char)ch);
在建个对应关系
"0 " --> "0000 "
"F " --> "1111 "
转化为2进制格式
再输出。
[解决办法]
0-f,对应0-15,做一张表,将16进制转换为2进制
[解决办法]
int Get2Value( unsigned char ch )
{
int n=0;
int bits=1;
while( ch )
{
if( ch & 0x01 )
n += bits;
ch = ch > > 1;
bits *= 10;
}
return n;
}

tmp.Format( "%08d ",Get2Value((unsigned char)ch));

热点排行