• 締切済み

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には いくつか参考になりそうなネタがあるようですが、うまく翻訳でできず意味もわかりかねます。 「ここを見ろ」的なご意見はご勘弁ください。

みんなの回答

回答No.1

「ここを見ろ」的な意見ですが 以下にかんたんな説明とCのコードがあります。 「UNIX は、time_t を Win32 FILETIME SYSTEMTIME に変換するには、方法」 http://support.microsoft.com/kb/167296

関連するQ&A