我正在将Linux Logger转换为在Windows中工作。 记录器使用snprintf进行打印。 在linux中,这个记录器输出timeofday.tv_usec,给出类似这样的东西:
Jun 24 18:30:31-232928 test-transport...
在我的Windows版本中,使用QueryPerformanceCounter,我生成如下结果:
jun 24 23:54:18-866568508 test-transport....
在Linux中,uSeconds正好有6位数字,但是这个windows函数会生成9位数字。我怎么能只打印最后6位?请记住,这是一个时间关键代码。
答案 0 :(得分:7)
将数字除以10的余数除以想要保留的位数的幂。
在你的情况下:
num % 1000000
答案 1 :(得分:0)
这实际上取决于866568508
代表的数字。这是几纳秒?还是微秒?或者这是以其他数字为单位,例如QueryPerformanceFrequency
?我们假设866568508
表示866568508
赫兹时钟的n
个刻度。然后,866568508
表示的时间(以秒为单位)为866568508/n
。这是866568508*1e6/n
微秒。
因此,您使用最后6位数获取微秒的想法不一定正确。既然你说你通常有9位数,那么n可以是1e9
(即你有纳秒分辨率)。在这种情况下,您可以通过866568508
866568508 / 1e3`从866568508*1e6/1e9 =
获得微秒。
但是,正如我所说,所有这一切都取决于你知道决议是什么。
从某些快速谷歌搜索中,似乎QueryPerformanceFrequency
应该为您提供频率。