64,654
社区成员
发帖
与我相关
我的任务
分享
#include "stdafx.h"
#include "stdio.h"
#include <iostream>
#include "windows.h"
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
FILETIME f1,f2;
SYSTEMTIME SystemTime;
GetSystemTime(&SystemTime);
SystemTime.wSecond+=1;
SystemTimeToFileTime(&SystemTime,&f1);
SystemTime.wSecond+=2;
SystemTimeToFileTime(&SystemTime,&f2);
UINT64 i641 =(UINT64)f1.dwHighDateTime*((UINT64)0xFFFFFFFF+1) + f1.dwLowDateTime;
UINT64 i64a = *(UINT64*)(&f1);
UINT64 i642 =(UINT64)f2.dwHighDateTime*((UINT64)0xFFFFFFFF+1) + f2.dwLowDateTime;
UINT64 i64b = *(UINT64*)(&f2);
printf("%I64d",i642-i641);
system("pause");
return 0;
}
打印结果
20000000
感觉不对,相差1秒钟,打印的结果应该是 10亿除以100 啊,为啥是20000000
功能
FILETIME结构持有的64位无符号的文件的日期和时间值。
此值表示自1601年1月1日开始的100纳秒为单位的时间。
编辑本段语法
typedef struct _FILETIME {
DWORD dwLowDateTime; /* 低 32 位 */
DWORD dwHighDateTime; /* 高 32 位 */
} FILETIME, *PFILETIME, *LPFILETIME;
编辑本段成员
dwLowDateTime
低位32位的文件的时间值。
dwHighDateTime
高位32位的文件的时间值。
编辑本段要求
头文件: WINDEF.H[1]
1纳秒=1000皮秒
1纳秒 =0.001 微秒
1纳秒=0.000 001毫秒
1纳秒=0.000 000 001秒
#include <stdio.h>
#include <windows.h>
int main() {
FILETIME f1,f2;
SYSTEMTIME SystemTime;
GetSystemTime(&SystemTime);
SystemTime.wSecond+=1;
SystemTimeToFileTime(&SystemTime,&f1);
SystemTime.wSecond+=1;
SystemTimeToFileTime(&SystemTime,&f2);
UINT64 i641 =(UINT64)f1.dwHighDateTime*(0xFFFFFFFFui64+1ui64) + (UINT64)f1.dwLowDateTime;
UINT64 i64a = *((UINT64*)(&f1));
UINT64 i642 =(UINT64)f2.dwHighDateTime*(0xFFFFFFFFui64+1ui64) + (UINT64)f2.dwLowDateTime;
UINT64 i64b = *((UINT64*)(&f2));
printf("%I64d\n",i642-i641);
printf("%I64d\n",i64b-i64a);
return 0;
}
//10000000
//10000000
//
根据定义这样算出来,应该是刚刚好1秒啊,为啥是2呢
printf("%I64d",(i642-i641)*100 / 1000000000 );