2011-06-25 4 views
2

私はWindowsで動作するようにLinux Loggerを変換しています。 ロガーはsnprintfで印刷します。 Linuxの場合数字の最後の数字を取得するには?

jun 24 23:54:18-866568508 test-transport.... 

、uSeconds:私はこのような結果を生成し、QueryPerformanceCounterのを使用して、私のWindows版で

Jun 24 18:30:31-232928 test-transport... 

:Linuxでは は、このロガーの出力timeofday.tv_usecは、このような何かを与えることちょうど6桁ですが、この窓関数は9桁の数字を生成します。最後の6桁だけを印刷するにはどうすればいいですか?これはタイムクリティカルなコードであることに注意してください。

+0

ちょうど10^7? – Mikola

+0

2番目の例の最後の6桁を表示すると '568508'が表示され、' 866568'は表示されません。 –

答えて

7

残りの数字は、保存する桁数の累乗を10で割ったものを使用します。あなたのケースでは

num % 1000000 
+1

確かに、私はそれを忘れることができますか?私はもっ​​と眠らなければならない! – bratao

0

それは本当に数866568508が何を表すかによって決まります。これはナノ秒ですか?またはマイクロ秒ですか?または、これは他の数字の単位で表します(QueryPerformanceFrequencyなど)?だから、866568508866568508のティックを表し、nヘルツの時計であるとしましょう。次に、866568508で表される秒単位の時間は866568508/nです。これは866568508*1e6/nマイクロ秒です。

したがって、最後の6桁を使用してマイクロ秒を取得するという考えは必ずしも正しいとは限りません。通常9桁の数字があると言うので、nは1e9(つまり、ナノ秒の解像度です)となります。この場合、「866568508*1e6/1e9 = 866568508/1e3`を実行して866568508からマイクロ秒を取得できます。

しかし、私が言ったように、これはすべてあなたが解決策が何であるか知っているかどうかにかかっています。

いくつかのクイックグーグルサーチから、QueryPerformanceFrequencyのように表示されるはずです。

関連する問題