2014-09-25 74 views
0

我想写一个二进制表示的整数到一个文件中,接受我将在文件中获得十六进制格式,但是我没有得到预期的结果。fwrite文件输出是错误的

uint32_t a = 1; 
FILE * file = fopen("out.txt", "ab+"); 
fwrite(&a, sizeof(uint32_t), 1, file); 

我希望得到(小端)

1000 0000 

,而是我的文件

0100 0000 

运行此代码段的包装机,得到的是Ubuntu Linux操作系统的32位(小端)。 有没有人可以解释为什么它是这样的,文件内容是否与我的机器上的整数表示一致? 干杯。

回答

2

假设每个两位数这些团体是一个字节,你看到的是正确的:

01 00 00 00 

小尾数订单字节,没有半字节字节。所以你有什么是:

01 00 00 00 
|| || || || 
|| || || == -> 0 * 256 * 256 * 256 
|| || == ----> 0 * 256 * 256 
|| == -------> 0 * 256 
== ----------> 1 
+0

感谢您的亲切解释。 – maximegir 2014-09-25 02:29:29