【发布时间】:2012-07-12 07:05:44
【问题描述】:
我对 C 函数 fwrite 有一个“有趣”的问题。我有一个unsigned int 指针,我想将它写入二进制文件,所以我使用了fwrite。但是文件中的字节是颠倒的。考虑到unsigned int 的大小(在我的情况下为4 字节),例如,如果我的数据是FE 45 78 D4 4C E9 EA F1etc,我看到文件内容为D4 78 45 FE F1 EA E9 4C 等。我该如何解决这个问题?
更多信息:当我说字节以错误的顺序写入时,我的意思是我用来读取文件的每个程序都以错误的顺序看到字节,当然会带来读取错误......我不明白为什么只有 fwrite函数使用不同的方式来表示数据...
更多信息:
我试过了
fwrite(myuipointer,4,size,file);
fwrite(myuipointer,1,size*4,file);
同样的结果。 我还尝试使用指向我的数据的无符号字符指针并将其写入,但没有成功...
【问题讨论】:
-
似乎是字节序问题。向我们展示您的
fwrite的外观,我们可以帮助您更正这一点 -
为什么你认为有什么事情需要解决?有什么坏了吗?
-
尝试读取您的数据并检查是否有任何问题。在那之前我看不到问题。
-
我不知道我还能说什么……我有我的 unsigned int 指针。如果我打印它们将按预期顺序显示的数据。当我fwrite这些数据时,顺序是倒置的,所有应用程序都以倒置的顺序看到数据,所以一定是fwrite的行为带来了问题......
-
是的,你得到了颠倒的顺序,它应该可以工作。您的计算机在内部使用这种倒序,而 fwrite 只是将内部格式转储到文件中。如果您使用 fread 将其读回变量中,它将正常工作。