爲什麼這幾行代碼,當我嘗試使用fread(&num, "file path", 1, FILE*);
讀取DWORD num = 1880762702
我得到result = 10574
如果我改變NUM任何其他數字說2880762702
才把它的工作原理是行不通的。閱讀DWORD從二進制文件
1
A
回答
3
要讀取多字節數量,例如DWORD(這是Win32-對於32位數字),您需要知道endianness。最好一次讀取第一個字節,然後根據文件中使用的字節順序進行轉換。
FILE *in;
DWORD num = 0;
if((fin = fopen("filename.bin", "rb")) != NULL)
{
unsigned char b0, b1, b2, b3;
fread(&b3, sizeof b3, 1, in);
fread(&b2, sizeof b2, 1, in);
fread(&b1, sizeof b1, 1, in);
fread(&b0, sizeof b0, 1, in);
// Assuming file is big-endian.
// for little endian, swap the order to b0...b3
num = (((DWORD) b3) << 24) | (((DWORD) b2) << 16) | (((DWORD) b1) << 8) | b0;
fclose(in);
}
1
fread()
的第二個參數是您想要讀取的數據的大小。在你的情況下,這是sizeof(DWORD)
。
相關問題
- 1. 閱讀二進制文件
- 2. 閱讀二進制文件
- 3. 閱讀二進制文件
- 4. 閱讀文件的二進制文件
- 5. 文件閱讀:feof()二進制文件
- 6. 閱讀二進制文件Python來Vb.net
- 7. 閱讀二進制文件問題
- 8. 閱讀二進制文件的問題
- 9. 閱讀二進制文件的matlab
- 10. 閱讀PCAP二進制文件到HDFS
- 11. 閱讀結構化二進制文件
- 12. 如何閱讀和二進制文件
- 13. 閱讀chunks二進制文件C#
- 14. 閱讀二進制
- 15. 位閱讀謎題(閱讀C++中的二進制文件)
- 16. 閱讀二進制圖像
- 17. 閱讀從二進制文件和雙列字符庫存
- 18. 討厭的錯誤閱讀結構從二進制文件(C++)
- 19. 閱讀從CSV二進制字符文件
- 20. 從二進制文件讀取Scala
- 21. 從URLConnection讀取二進制文件
- 22. 從文件中讀取二進制數
- 23. 從二進制文件讀取錯誤
- 24. 從二進制文件讀取
- 25. 從GUI讀取二進制文件
- 26. 讀二進制文件CS
- 27. C#從讀取文本文件中讀取二進制文件
- 28. 閱讀用Python編寫的Fortran二進制文件
- 29. 蟒蛇 - 確定字段閱讀二進制文件的結尾
- 30. 閱讀Python中的二進制文件到一個結構
你提供的代碼甚至不會編譯。請提供完整的代碼片段... – 2010-04-06 07:24:42
你能否澄清一下你的問題。發佈程序的實際代碼,包括代碼中使用的變量的聲明,以及調用fopen()和fclose()。 – 2010-04-06 07:25:45