任何人都可以顯示如何正確地將二進制表示的數據轉換爲C中的雙精度值。例如,我有8個無符號字符值被轉換爲雙精度值(讓我們將其命名爲緩衝區)。所以緩衝區[0]的0位是LSB,緩衝區[7]的7位是MSB。非常感謝提前!從c中的二進制文件讀取雙精度值
3
A
回答
3
只投它,我覺得
char buf[8];
double x;
...
x = *((double*) buf);
4
IF下面都是真:
- 你的機器是little-endian的。
- 在您的機器上,
sizeof(double) == 8
- 您的機器的「字節」的想法與保存數據的機器(不是所有機器都使用八位字節/ 8位字節)的想法相同。
- 您的機器的浮點格式與生成/保存數據的機器的浮點格式相匹配。
你可以簡單地讀取8個字節到一個數組中,並做了鑄件(假設「FD」被打開的文件描述符):
char bytes[8];
fread(&bytes, 8, 1, fd);
double d = *((double*)bytes);
更普遍,但是,我建議不保存這樣的二進制數據。是的,它曾經是常見的,許多人仍然這樣做,但是對於現代硬件來說,這是非常不必要的,並且會導致這種情況,如果您的平臺與其寫入的平臺完全匹配,那麼只能輕鬆地對其進行反序列化到磁盤。選擇一種可移植的格式 - 如果可以的話,使用基於人類可讀的基於UTF-8的格式 - 並使用它。
相關問題
- 1. 如何從C++中的文件中讀取雙精度值
- 2. 從控制檯讀取雙精度值
- 3. C#從讀取文本文件中讀取二進制文件
- 4. 從文件中的Java讀取的雙精度值
- 5. 從二進制文件(C)中讀取非固定長度
- 6. 從java中的文本文件中讀取雙精度
- 7. 如何獲得C中雙精度的二進制數?
- 8. 從Python/NumPy中包含整數和雙精度的二進制文件讀取或構建數組
- 9. 從文件中讀取字符串和雙精度的組合
- 10. 使用Python編寫雙精度二進制文件
- 11. C:讀取二進制文件
- 12. C二進制文件讀取
- 13. C,讀取二進制文件?
- 14. 讀取二進制文件C++
- 15. 將雙精度值轉換爲二進制值
- 16. 如何從二進制文件讀取C文本文件?
- 17. 從c#中的二進制文件讀取多個結構#
- 18. 從URLConnection讀取二進制文件
- 19. 從GUI讀取二進制文件
- 20. 從二進制文件讀取Scala
- 21. 將二進制雙精度數字的十六進制表示轉換回Ruby中的雙精度
- 22. 我如何從一個文件讀取到Allegro C++中的雙精度?
- 23. C#十進制和雙精度
- 24. 如何停止從二進制文件中讀取c
- 25. 從二進制文件中逐位讀取C
- 26. 從二進制文件中讀取行C++
- 27. 有沒有辦法更有效地讀取文件中的二進制雙精度浮點數組?
- 28. 在C中搜索二進制碼(讀取緩衝的二進制文件)
- 29. 在c#中讀取exe文件作爲二進制文件
- 30. 在MatLab中讀取二進制文件
這種技術假定架構,格式,字節順序,適當的對象大小都相同 - 如果數據來自同一臺機器,這些都可以。 – wallyk 2010-08-10 19:35:08