我試圖在窗口中獲取以毫秒爲單位的經過時間。我發現要做到這一點的唯一方法是使用FILETIME結構獲得1601年以來的100納秒數。但是FILETIME結構會將值存儲在兩個變量中,我想知道如何減去這兩個結構,將它們除以10000(以獲得毫秒)並將結果存儲在單個變量中 我正在使用C++ Visual Studio 2008速成版如何減去兩個FILETIME?
回答
閱讀的FILETIME
文檔:
不建議您從FILETIME結構加減值來獲得相對時間。相反,你應該的文件時,低和高位部分複製到一個ULARGE_INTEGER結構,執行QuadPart成員在64位運算,並複製LowPart和HighPart成員進入FILETIME結構體。
在那裏你也有你的單一號碼(ULARGE_INTEGER
結構的QuadPart
)。
+1,這就是問題如何解決。 – sharptooth 2012-04-04 10:58:35
好的,謝謝你,解決了這個問題。但它表示,如果編譯器支持內置64位整數,則只能使用QuadPart。 Visual Studio支持它,但是當我製作可執行文件時,它可以在安裝了Windows的任何系統中工作? – XaitormanX 2012-04-04 11:06:14
根據定義,可執行文件本身不再依賴於編譯器。 – Joey 2012-04-04 11:18:02
FILETIME ft1;
FILETIME ft2;
int iDifferenceInMS = (*((ULONGLONG*)&ft2) - *((ULONGLONG*)&ft1))/10000;
這實際上可能非常糟糕。 FILETIMES是32位對齊的,而不是64位對齊的。這意味着,取決於編譯器將變量放在內存中的位置,並取決於系統。這意味着在某些機器上運行時可能會崩潰。你不想要這種悲傷。 另一方面,ULARGE_INTEGER需要64位對齊,所以你不會得到這些對齊錯誤。 – Eagle 2014-08-08 22:03:00
- 1. 如何減去兩個sparsevector?
- 2. 減去兩個值
- 3. 如何減去兩倍
- 4. 如何減去兩個NSUInteger變量?
- 5. 如何減去兩個gettimeofday實例?
- 6. 如何減去兩個約達日期?
- 7. 如何減去兩個日期在Laravel5.4
- 8. 我如何減去兩個時間段
- 9. 如何減去jQuery中的兩個值
- 10. 如何減去兩個數組
- 11. 如何減去兩個數字串
- 12. 如何減去兩個字符串
- 13. 減去兩行
- 14. SAS減去兩個值
- 15. mongo減去兩個字段
- 16. 減去兩個數組
- 17. 減去兩個結合域
- 18. 減去兩個總計
- 19. 減去兩個char成RAX
- 20. 減去兩個結果
- 21. 減去兩個數據集
- 22. 減去兩個數據幀
- 23. 減去兩個日期
- 24. 減去兩個case語句
- 25. 減去兩個子查詢
- 26. 減去兩個數據幀
- 27. 減去兩個char指針
- 28. 減去兩個MySQL查詢
- 29. 減去兩個變量
- 30. 如何減去兩個結果的兩個別名
編程語言?框架? – 2012-04-04 10:38:21
對不起,我以爲我已經把它。我正在使用Visual Studio 2008 Express版的C++ – XaitormanX 2012-04-04 10:49:35
IMO這是一個完全合法的問題和答案,目前的措辭。它應該重新打開。 – 2014-04-04 16:32:53