读书人

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

发布时间: 2012-02-24 16:30:39 作者: rapoo

关于读取二进制文件的问题
本人今天编写了一个关于二进制读取的程序,可是将读取的数据显示出来后发现都是写十六进制数,请问各位高手,我应该怎样将数据变成二进制的数据呢,越详细越好,我在这里先谢过回帖的各位高手,程序原代码如下:
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));

读书人网 >VC/MFC

热点推荐