读二进制文件的奇怪问题!
fp = fopen(filepath,"rb");
fread((char*)&BUFF,sizeof(BUFF),1,fp);
把一个二进制文件里的data读到一个构造体里
二进制文件data如下:
(为了看的清楚,字节之间我用","分开,其实","不存在)
01,03,45,12,01,00,00,00,03,02,01,00,00,00,12
构造体如下:
struct BUFF
{
short int AA;
long BB;
short int CC;
long DD;
}
结果如下:
AA=769(没有问题,高位,低位互换,变为十进制)
BB=1(问题就出现在这里,"45,12"这两位莫名其妙就没了)
CC=515(由"03,02"转变而来,没有问题,就是因为BB出了问题,这里已经错位了)
DD=1(这个也没有什么问题,由"01,00,00,00"转换而来)
问题就是出在BB的地方,一路读下来只要碰到占4个字节的(int也是一样)就会先
丢掉2个字节,然后在读4位,而且这种现象只会出现一次,到DD处就没有出现,
如BB是short int的话,问题就会在DD处出现。
迷惑中,请高手帮忙!!!