Jaki jest właściwy sposób przekonwertowania struktury FILETIME
na ? Czy możesz mi powiedzieć?FILETIME na __int64
11
A
Odpowiedz
13
nie sądzę jesteś przypuszczać, aby: „Nie rzucać wskaźnik do FILETIME
strukturze albo ULARGE_INTEGER*
lub __int64*
wartość, ponieważ może to spowodować błędy wyrównania w 64-bitowym systemie Windows.”
Jeśli naprawdę chciał to byłoby coś takiego:
__int64 to_int64(FILETIME ft)
{
return static_cast<__int64>(ft.dwHighDateTime) << 32 | ft.dwLowDateTime;
}
FILETIME ft = // ...
__int64 t = to_int64(ft);
ale coś takiego:
FILETIME ft = // ...
__int64 t = *reinterpet_cast<__int64*>(&ft);
jest złe.
4
Spróbuj
(__int64(filetime.dwHighDateTime)<<32) | __int64(filetime.dwLowDateTime)
1
Oczywiście można po prostu przejść w __int64 odlewano do FILETIME następująco * (*) FILETIME & int64Val. To zadziała dobrze w Visual C++.
tj
__int64 createTime = 0;
__int64 accessTime = 0;
__int64 writeTime = 0;
GetFileTime(hFile, *(FILETIME*)&createTime, *(FILETIME*)&accessTime, *(FILETIME*)&writeTime);
7
Nie ma potrzeby, aby powrócić do tajemniczych konstrukcji wykorzystujących bitowym OR-tych. Windows API ma wszystko, czego potrzebujesz, aby to zrobić.
unsigned __int64 convert(const FILETIME & ac_FileTime)
{
ULARGE_INTEGER lv_Large ;
lv_Large.LowPart = ac_FileTime.dwLowDateTime ;
lv_Large.HighPart = ac_FileTime.dwHighDateTime ;
return lv_Large.QuadPart ;
}
Lub jeśli chcesz bezpośrednio przejść do __int64.
__int64 convert_to_int64(const FILETIME & ac_FileTime)
{
return static_cast<__int64> (convert(ac_FileTime)) ;
}
1
możesz wypróbować poniższy kod. kod jest od projektu chromu
template <class Dest, class Source>
inline Dest bit_cast(const Source& source) {
\t Dest dest;
\t memcpy(&dest, &source, sizeof(dest));
\t return dest;
}
//FILETIME to __int64
__int64 FileTimeToMicroseconds(const FILETIME& ft) {
\t return bit_cast<__int64, FILETIME>(ft)/10;
}
void MicrosecondsToFileTime(__int64 us, FILETIME* ft) {
\t *ft = bit_cast<FILETIME, __int64>(us * 10);
}
int _tmain(int argc, _TCHAR* argv[])
{
\t __int64 nTmpUint64 = 13060762249644841;
\t time_t unixtime;
\t FILETIME nTmpFileTm;
\t MicrosecondsToFileTime(nTmpUint64,&nTmpFileTm);
\t return 0;
}
Powiązane problemy
- 1. Sposób niestandardowego formatowania FileTime
- 2. Jak konwertować FileTime na ciąg z DateFormat
- 3. Sposób na zmianę boost :: posix_time :: ptime na __int64
- 4. Jak przekonwertować 'long long' (lub __int64) na __m64
- 5. Format printf dla niepodpisanego __int64 w systemie Windows
- 6. Konwertuj sekundy jako podwójne na std :: chrono :: duration?
- 7. Java 7 NIO.2 Files.getLastModifiedTime strefa czasowa
- 8. Delphi 6: Jak zmienić utworzony plik (= data utworzenia pliku)?
- 9. Co się dzieje, gdy CreateWaitableTimer jest ustawiony na nieistniejącą datę/godzinę?
- 10. C++ Utrata dokładności zmiennoprzecinkowej: 3015/0,00025298219406977296
- 11. Port C++ AtomicLong.lazySet
- 12. SSE2 optymalizacja kodu
- 13. Mieć globalną definicję funkcji w pliku nagłówkowym i uniknąć powielonego błędu powiązania symbolu
- 14. Definicja cross-platform 64-bitowych liczb całkowitych w C++ dla Windows i Linux
- 15. C#: uporządkowanie struktury zawierającej tablice
- 16. Relacja na zakres na ActiveRecord
- 17. Konwertuj NA na poziom czynnika
- 18. . Na podstawie wyszukiwarki opartej na .Net opartej na .Net?
- 19. cbind: czy istnieje sposób na ustawienie brakujących wartości na NA?
- 20. Tworzenie obrazu na pełnym ekranie na samouczku na Androidzie
- 21. ruby na szynach: renderowania partials na każdej pozycji na liście
- 22. Najlepszy sposób na zerwanie łańcucha na ostatniej kropce na C#
- 23. Jak przekonwertować projekt oparty na NIB na oparty na scenorysie?
- 24. Otwieranie aplikacji na facebooku na Androidzie na konkretnym stanowisku
- 25. Jakie uprawnienia na Facebooku pozwalają na umieszczanie na ścianie strony (nie na ścianie profilu)?
- 26. Dlaczego nie jest prawdą przekształcanie "wskaźnika na wskaźnik na niestały" na "wskaźnik do wskaźnika na const"
- 27. licznik cykli z GCC
- 28. Niespójność obliczeń sinusów w Visual C++ 2012?
- 29. Adnotacje danych na kontrakcie na usługi WCF
- 30. Wyjątek RuntimeException na Camera.setParameters() na nexus one
byłem w procesie edycji :) – GManNickG
Jak o memcpy (<__int64>, & FILETIME, 8); ? Czy to jest bezpieczne? – akif
Chciałbym znaleźć 'memcpy' trudniejsze do zrozumienia, ale jestem pewien, że to by działało. Kompilator prawdopodobnie zoptymalizuje zmianę i/lub lepiej. – GManNickG