关于fread的一个有关问题,有图,求教

关于fread的一个问题,有图,求教
楼主有一个txt格式的文件,在Ultra里看是这样的:是39XXXXXX左右数值的一堆int32
然后楼主在我的C里面用fread(data,4,1,filename)读这个文件
结果却和预想的不一样,很奇怪。。。因为传不了图,可能有点难理解。

POINT:二进制文件用ultra查看是 一堆4BYTE的数值且第一个字节都是39左右
               按理说,用fread读这个文件,imagedata的每一个数组单元的数值大小应该相近才对,可是却差的很远,为什么?

///////////////////////////////////
源代码是这样的

#include "stdafx.h"
#include <atlstr.h>

int main(void)
{

uint32_t ImageData[256][256];

char *filename= "C:\\Users\\Frank\\Documents\\Visual Studio 2012\\Projects\\UI\\UI\\bin\\Debug\\bin\\result.txt";
FILE *pfile=fopen(filename,"rb");
if (NULL == pfile)
{
fprintf(stderr, "%s failed to open.\n", filename);
}
for (int i = 0; i < 256; i++)
for (int j = 0; j < 256; j++)
{
   if (1 != fread(&ImageData[i][j],4, 1, pfile))
{
printf("\n error");
}
   //ImageData[i][j] =(data);
}
fclose(pfile);
for (int i = 0; i < 9; i++)
for (int j = 0; j < 9; j++)
{
printf("\npixel[%d,%d]=%u",i,j,ImageData[i][j]);
}
getchar();
}

//////////////////////////////////问题是:为什么会发生这种情况,楼主想了很久没明白。。。楼主新手,见笑了。
------解决思路----------------------
是不是没考虑字节序的问题哦,整数 0x12345678 在内存和文件中保存出来是 78 56 34 21
------解决思路----------------------
大概是端序问题,读完ImageData[i][j]加一句
ImageData[i][j] = _byteswap_ulong(ImageData[i][j])

试试
------解决思路----------------------
该回复于2015-09-06 09:28:50被管理员删除