用fwrite将int和char类型的变量写入二进制文件,用64位机器和32位机器,写出的二进制文件一样吗

jsy5211 2012-08-20 09:03:42
将32位机器上写的二进制文件拷贝到64位机器上,文件一样吗?如果不一样,能转换成一样的文件吗?
...全文
426 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
图灵狗 2012-08-21
  • 打赏
  • 举报
回复
应该是对的,保险一点的话,用工具查看二进制的字节数据,UltraEdit和Pspad还有Notepad++加插件都是可以的。

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

引用 4 楼 的回复:

比如说
FILE *file = fopen("...", "wb");
int a = 1;
double b = 1.0;
fwrite(&a, sizeof(int), 1, file);
fwrite(&b, sizeof(double), 1, file);
fclose(file);
那么这段代码在32位上……
[/Quote]
赵4老师 2012-08-21
  • 打赏
  • 举报
回复
推荐使用WinHex软件查看文件或内存中的原始字节内容。
jsy5211 2012-08-21
  • 打赏
  • 举报
回复
首先谢谢各位大虾,但是浮点数的精度会不同吗?
ljhhh0123 2012-08-21
  • 打赏
  • 举报
回复
不同的系统之间传递文件是没有问题的。
qq120848369 2012-08-21
  • 打赏
  • 举报
回复
尺寸没问题, 大小端需要统一。
jsy5211 2012-08-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

比如说
FILE *file = fopen("...", "wb");
int a = 1;
double b = 1.0;
fwrite(&a, sizeof(int), 1, file);
fwrite(&b, sizeof(double), 1, file);
fclose(file);
那么这段代码在32位上和64位上写出的二进制代码应该一样吧?因为VS2……
[/Quote]不好意思double都是8,笔误
jsy5211 2012-08-20
  • 打赏
  • 举报
回复
比如说
FILE *file = fopen("...", "wb");
int a = 1;
double b = 1.0;
fwrite(&a, sizeof(int), 1, file);
fwrite(&b, sizeof(double), 1, file);
fclose(file);
那么这段代码在32位上和64位上写出的二进制代码应该一样吧?因为VS2008编译器,在32位上和64位上,int都是4个字节,double也是4个字节,只有指针和long类型32位上和64位上字节数不同啊,right?
图灵狗 2012-08-20
  • 打赏
  • 举报
回复
当然是可以的,掌握好字节数和字节的顺序就没有问题,都用字节流来表达的话,是可以跨平台的。
jsy5211 2012-08-20
  • 打赏
  • 举报
回复
用fwrit在32位上写的文件,通过转换,能不能得到和用fwrit在64位上写的文件一样呢?
图灵狗 2012-08-20
  • 打赏
  • 举报
回复
1、将32位机器上写的二进制文件拷贝到64位机器上,文件当然是一样的;
2、用fwrite将int和char类型的变量写入二进制文件,文件当然是不一样的,这个时候需要自己定义可移植类型,比如typedef unsigned int int32u_t之类的定义。

64,676

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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