请教在C语言中创建dat 文件的问题
程序如下:#include<stdio.h>intmain(){FILE*f;intbuf;f=fopen("test.dat","wb");buf=255;fwrite...
程序如下:
#include <stdio.h>
int main ()
{
FILE *f;
int buf;
f = fopen("test.dat","wb");
buf = 255;
fwrite(&buf,sizeof(buf),1,f);
fclose(f);
return 0;
}
我知道wb是以2进制写入,
我的问题是,当buf<=255时,
得到的test.dat文件用ultraedit打开的到
16进制数能够正确转换成10进制数,如buf=255时,
test.dat文件打开为FF 00 00 00,也就是255的十六进制数,
但当buf>255时,得到的十六进制数就不正确了。
如buf=256时,为00 01 00 00,
buf=257 01 01 00 00,
buf=258 02 01 00 00,
buf=259 03 01 00 00,
我个人觉得是>256时,数值溢出了,然后又重新计数
不过也是瞎猜,请各位高手帮帮忙了
小弟是刚学C,,
thx in advance. :D 展开
#include <stdio.h>
int main ()
{
FILE *f;
int buf;
f = fopen("test.dat","wb");
buf = 255;
fwrite(&buf,sizeof(buf),1,f);
fclose(f);
return 0;
}
我知道wb是以2进制写入,
我的问题是,当buf<=255时,
得到的test.dat文件用ultraedit打开的到
16进制数能够正确转换成10进制数,如buf=255时,
test.dat文件打开为FF 00 00 00,也就是255的十六进制数,
但当buf>255时,得到的十六进制数就不正确了。
如buf=256时,为00 01 00 00,
buf=257 01 01 00 00,
buf=258 02 01 00 00,
buf=259 03 01 00 00,
我个人觉得是>256时,数值溢出了,然后又重新计数
不过也是瞎猜,请各位高手帮帮忙了
小弟是刚学C,,
thx in advance. :D 展开
展开全部
首先不是溢出
256不可能溢出int
其次那个十六进制的高低位不是你看到的那样
要换一下位置
FF 00 00 00-》00 00 00 FF
如buf=256时,为00 01 00 00 -》00 00 01 00
buf=257 01 01 00 00,-》 00 00 01 01
buf=258 02 01 00 00, 00 00 01 02
buf=259 03 01 00 00,
这根windows系统存储数据的高低位有关系
linux就会不一样,你要是有条件的话可以在linux上试一下
如果你不是很确定的话可以用fread读进来看看,就知道是不是出错了,那个高低位的问题你在查一下,具体的我记得不是很清楚,害怕给你说错了,但是高低位肯定要换的
256不可能溢出int
其次那个十六进制的高低位不是你看到的那样
要换一下位置
FF 00 00 00-》00 00 00 FF
如buf=256时,为00 01 00 00 -》00 00 01 00
buf=257 01 01 00 00,-》 00 00 01 01
buf=258 02 01 00 00, 00 00 01 02
buf=259 03 01 00 00,
这根windows系统存储数据的高低位有关系
linux就会不一样,你要是有条件的话可以在linux上试一下
如果你不是很确定的话可以用fread读进来看看,就知道是不是出错了,那个高低位的问题你在查一下,具体的我记得不是很清楚,害怕给你说错了,但是高低位肯定要换的
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询