2014-09-25 75 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