fread以二进制读取变量和实际看到的不一样

santez 2017-03-04 06:10:07
程序A里的一个变量F=5152628
正常二进制是4E9F74
在UlterEdit找到这个变量从左到右是749F4E
到这里都没有问题

然后用程序B以二进制打开程序A
fread后打印出来却是74FFFFFF9F4E
为什么会这样?
然后我用程序C以二进制打开程序A
fwrite的这个变量F,写入808D5B(就是十进制的6000000)
用程序B读程序A这个变量也是80FFFFFF8D5B
打开被改写后的程序A,F的值也是也是6000000


我就想知道为什么会多出这么多F,UlterEdit里为什么看不到

...全文
230 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
santez 2017-03-04
  • 打赏
  • 举报
回复
引用 3 楼 zgl7903 的回复:
用无符号BYTE UINT 数据
谢谢高手,我加个unsigned解决了
santez 2017-03-04
  • 打赏
  • 举报
回复
A程序 int main() { int f = 5152628; printf("%d", f); getchar(); return 0; } B程序 int main() { FILE *WinIn; ULONGLONG i; int sum; char buffer; if (WinIn = fopen("A.exe", "rb+")) { printf("OPEN TEST1.EXE SUCCESS"); printf("\n"); getchar(); } else { printf("OPEN A.EXE FAIL"); getchar(); exit(0); } fseek(WinIn, 0xbe7, SEEK_SET); sum = ftell(WinIn); printf("LOCATION IS %x",sum); printf("\n"); for(i = 0;i <06 ;i++) { fread(&buffer,1,1,WinIn); printf("%x",buffer); } getchar(); fclose(WinIn); return 0; }
santez 2017-03-04
  • 打赏
  • 举报
回复
对了,用的是VSC2015,程序是.cpp
引用 2 楼 jianwen0529 的回复:
怎么个格式写出去,就怎么个格式读进来 把读写代码贴出来才好分析
用一个char保存,用%X打印的
zgl7903 2017-03-04
  • 打赏
  • 举报
回复
用无符号BYTE UINT 数据
幻夢之葉 2017-03-04
  • 打赏
  • 举报
回复
怎么个格式写出去,就怎么个格式读进来 把读写代码贴出来才好分析
santez 2017-03-04
  • 打赏
  • 举报
回复
对了,用的是VSC2015,程序是.cpp

70,037

社区成员

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

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