- 締切済み
index.datの内容について
windows7でindex.datを調べています。 履歴の日付の項目と思われるところがありまして、その値が 6b62fbe385e1cc01・・・・(1) でした。 色々調べてみると、これはwindowstimeというもの?のようで、 変換が必要みたいでした。 それでDCode(www.digital-detective.co.uk)というソフトを使用してみました。 DCodeの設定ですが、DecodeFormatをWindows:64bit Hex Value Little Endian に設定すると Thu, 02 February 2012 17:37:25 +0900・・・・(2) と、自分がアクセスした日が出力されたように感じます。(おおよそですが) そこで何点か質問があります。 1、このフォーマット(windowstime)とは一体なんですか? (マイクロソフトが考案したwindwosの独自フォーマットと言ってしまえば、それまでですが・・) 2、計算方法がわからなかったので逆から考えることにして、 (2)をunixtimeに変えてみたら1328171845・・・・(3) になりました。 つまり1970年1月1日00:00:00(UTC)に(3)秒を足せば良いわけですよね? しかし(1)からどう計算しても(3)になりません。 unixtimeとは切り離して考えた方が良いのでしょうか? 「前記のソフト使えばいいじゃん。」 ではなく、計算方法が知りたいです。 バイナリを見たり、2進数化もしてみましたが、どーしてもたどり着きません。 どなたか計算方法を教えてください。 3、できればperlでこの数値を変換するプログラムを考えたいのですが、効率が良い プログラムの参考URLまたは64bit Hex Value Little Endianの理論(?)を使った 特殊なコードがperlに存在するなら、それを教えてもらえないでしょうか? ※お粗末な話ですが、当方あまり英語に自信がありません。調べた限りでは海外のURLには いくつか参考になりそうなネタがあるようですが、うまく翻訳でできず意味もわかりかねます。 「ここを見ろ」的なご意見はご勘弁ください。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- momokurisakura
- ベストアンサー率66% (39/59)
「ここを見ろ」的な意見ですが 以下にかんたんな説明とCのコードがあります。 「UNIX は、time_t を Win32 FILETIME SYSTEMTIME に変換するには、方法」 http://support.microsoft.com/kb/167296