奇怪的问题,16bit二进制文件读取
我有一二进制文件,保存的数据为16bit uint,用ultraEdit软件打开数据格式如下:
00000000h FB 00 FE 00 04 01 00 01 FD 00 FD 00 FF 00 FE 00
00000000h FF 00 FD 00 FE 00 FF 00 FF 00 FD 00 02 01 03 01
.........
我用如下代码读取数据
FILE *pFile;
pFile=fopen(szFileName,"rb");
unsigned char pBuf;
WORD **gray;
gray=new WORD* [1024];
for(UINT i=0;i<1024;i++)
{
*(gray+i)=new WORD[1024];
}
for(i=0;i<1024;i++)
{
for(UINT j=0;j<1024;j++)
{
fread((char*)&pBuf,2,1,pFile);
*(*(gray+i)+j)=(WORD)pBuf;
}
}
fclose(pFile);
CString str;
str.Format("%d",*(*(gray+0)+0));
MessageBox(str);
出现问题如下:
第一个数字FB 00换算成十进制251,是对的
第二个数字FE 00换算成十进制254,也是对的,
第三个数字04 01读成了4,
第四个数字00 01读成了0,
...
发现一个规则:凡是后面一个字节00的,读取的都是正确的,如第一第二个数字
而后面是01的,要加上一个256,才与实际数字相符,如第三、第四个数字
为什么会这样,怎样改正我这个程序