二进制文件读取错误

gzyyan249 2012-06-14 11:48:36
我用0-255的整数变成ascii码以二进制的方式保存到txt中,读取txt文件的时候,将ascii码变成整形读取,127以后的数据都变成负数,这是为什么,还有26这个数也是错的,求各位指教,有读取的代码最好。
...全文
172 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
gzyyan249 2012-06-22
  • 打赏
  • 举报
回复
读拓展ascii要(x+256)%256,这样就对了
_KyLeo 2012-06-14
  • 打赏
  • 举报
回复
楼主是怎么转换的?能否贴源代码出来?
W170532934 2012-06-14
  • 打赏
  • 举报
回复
为什么不直接存取?转换成ASSIC码。标准ASSIC只能支持到127.IBM的拓展ASSIC才能支持到255呢
赵4老师 2012-06-14
  • 打赏
  • 举报
回复
FILE *fp;
fp=fopen("d:\\1.txt","wb");
for(int i =0;i < 256;i++) fputc(i,fp);
fclose(fp);
sxldfang 2012-06-14
  • 打赏
  • 举报
回复

[Quote=引用 7 楼 的回复:]

不要把
fopen("...","...");fscanf,fprintf,fclose //读时把\r\n替换成\n,写时把\n替换成\r\n;读到\x1a就设置EOF;读写的内容当字符看待

fopen("...","...b");fread,fwrite,fclose //不作以上替换,遇到\x1a仍继续读;读写的内容当字节看待
弄混了
[/Quote]
支持赵老师的观点!!!

通俗的讲,就是你打开文件的方式错了,应该这样:

FILE *fp=fopen("d:\\1.txt","wb");
for(int i =0;i < 256;i++)
{
unsigned char s = (unsigned char)i;
fwrite(&s,1,1,fp);
}
赵4老师 2012-06-14
  • 打赏
  • 举报
回复
不要把
fopen("...","...");fscanf,fprintf,fclose //读时把\r\n替换成\n,写时把\n替换成\r\n;读到\x1a就设置EOF;读写的内容当字符看待

fopen("...","...b");fread,fwrite,fclose //不作以上替换,遇到\x1a仍继续读;读写的内容当字节看待
弄混了
gzyyan249 2012-06-14
  • 打赏
  • 举报
回复

for(int i =0;i < 256;i++)
{
unsigned char s = (unsigned char)i;
fwrite(&s,1,1,fp);
}

这是存0-255的ascii码的代码
aiqingdejian 2012-06-14
  • 打赏
  • 举报
回复
代码在哪呢···
酱油党 2012-06-14
  • 打赏
  • 举报
回复
使用的数据类型有问题。用unsigned int 或uint

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧