如果我使用類似double
的字節來保存文件大小,這很快就會失敗,那麼我會使用哪種數據類型?現在有幾個TB是常見的,所以我希望數據類型能夠保存一個很大的數字。C:以字節爲單位的文件大小的正確數據類型是什麼?
回答
這將取決於你的平臺。在Unix系統上,你可以使用off_t
類型。在Windows上,您可能需要使用LARGE_INTEGER
。這些是通過返回文件大小的函數在這些系統上使用的類型(Unix上的stat
,Windows上的GetFileSize
)。
如果你想要一個便攜式的,uint64_t
應該足夠大。
快速Google會議後,它看起來像uint64_t是我想要的。謝謝!我對答覆的數量和響應時間感到不知所措。太棒了! – EnibMoc1994
@ EnibMoc1994:您也可以使用'long long'或其未簽名的合作伙伴,它們至少保證64位。 – caf
long long
是彈出收藏:)
爲size_t是通常在C的filesizes,但它的類型依賴於平臺(在Windows的32位或64位無符號整數)。我建議__int64(一個64位int) - 應該處理多達138,547,332 terrabytes。
編輯:只是檢查,Windows API調用GetFileSizeEx
得到一個LARGE_INTEGER,這是一個64位有符號整數。所以LARGE_INTEGER也是一個不錯的選擇。
爲了記錄,在64位版本中'size_t'的大小是64位。 –
它不是'unsigned int',它是一個無符號整數類型。 – paxdiablo
道歉,@paxdiablo,它實際上是平臺依賴,如你所暗示的。在使用32位的Windows上,它相當於一個unsigned int。上次我相信Visual Studio告訴我的。 :)編輯我的答案是更精確。更多信息請看:http://en.wikipedia.org/wiki/Size_t –
有一個函數叫做ftello()
,它返回一個off_t
。
隨着fgetpos()
,你需要一個fpos_t
變量 - 編輯:這不一定是一種算術類型。
因此off_t
可能/應該適合您的需要,並保持您獨立於實際數據類型的大小。
只要注意''ftello'和'off_t'是Posix,而不是標準C. –
如果你沒有'off_t',你也沒有'ftello',並且沒有(可移植的)方法來獲得更大的文件偏移量比'長'... –
該libc stat
使用off_t
,這是一個unsigned,64位寬類型的typedef。這將適合一段時間。
off_t是在OS X上長簽名的typedef。 –
- 1. 如何確定PyTables數組的大小(以字節爲單位)?
- 2. 什麼是以字節爲單位的Lua數字類型長度?
- 3. 以字節爲單位給出的不準確的NSData大小
- 4. 獲取文件的總大小以字節爲單位
- 5. 枚舉大小(以字節爲單位)
- 6. 以字節爲單位確定緩衝區的總大小
- 7. 如何確定使用NSURLConnection下載文件的大小(以字節爲單位)?
- 8. 以字節爲單位的類的大小
- 9. ffprobe的數據包大小單位是什麼(類似於ffmpeg)?
- 10. 以字節爲單位的RSA簽名的大小是多少?
- 11. C++獲取EOL的大小(以字節爲單位)
- 12. blob類型的大小分佈以什麼單位表示?
- 13. 以字節/兆字節爲單位確定表或選定記錄的大小
- 14. 爲什麼在C#中bool數據類型的大小隻有1位?
- 15. 以ls爲單位的文件大小?
- 16. 獲取數據類型字節大小
- 17. 爲什麼類的大小是1字節的union union成員?
- 18. iphone使用exif數據縮小圖像的大小(以字節爲單位)
- 19. 什麼是使用Fortran(ifort)以字節爲單位獲取文件大小的好方法?
- 20. Alllocate正確的字節數組大小
- 21. 什麼是相應的C++數據類型爲SQL數字(18,0)數據類型?
- 22. 如何計算以字節爲單位的節點大小
- 23. Range頭是壓縮或未壓縮字節的大小(以字節爲單位)?
- 24. C++什麼是字符串文字的數據類型?
- 25. 獲取HTTPRequest/HTTPResponse頭字節大小(以字節爲單位)
- 26. 爲什麼寫入的python文件大小爲5120字節?
- 27. 什麼是正確的SQLAlchemy類型來存儲大字符串?
- 28. 以字節爲單位測量字符串的大小php
- 29. 以字節爲單位的UTF-8字符串大小
- 30. 以字節爲單位的字典大小
+1爲了麻煩問,而不是僅僅使用一些僞造的東西。 :-)歡迎來到SO! –