Тема: VBScript Конвертирование даты из HEX в обычный формат
Столкнулся с такой проблемой. Многие программы хранят в реестре какую-то дату в виде HEX. В частности, у меня сейчас проблемы с симантеком, но даже сама винда часто так поступает (например, HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsBackup\Status, параметр Last Success)
И вот вижу я что-то типа 70 05 A0 27 9B CA C9 01 и знаю, что это 01.05.2009 20:26:49
Собственно, наполовину проблему я решил, т.к. алгоритм преобразования я нашел (может, кому пригодится)
Это т.н. FileTime, поступаем следующим образом - получаем HEX-число (01c9ca9b27a00570, да, младшее число становится старшим), потом переводим это в DEC (получаем 128856832090310000). Это WinNT time, из него можно получить нормальную дату (в частности, с помощью команды w32tm.exe /ntte 128856832090310000)
HEX-число я получаю (естественно, как стринг), для преобразования обычного DEC-числа в дату на этом же форуме я нашел замечательную функцию (из темы про получение времени последнего логина пользователей)
Function getLast( last )
Dim intLastLogonTime
intLastLogonTime = last.HighPart * (2^32) + last.LowPart
intLastLogonTime = intLastLogonTime / (60 * 10000000)
intLastLogonTime = intLastLogonTime / 1440
if intLastLogonTime <> 0 then intLastLogonTime = intLastLogonTime + #1/1/1601#
getLast = intLastLogonTime
End Function
так что затык только один - пробросить мостик между имеющимся у меня HEX и требуемым для getLast десятичным числом
попробовал поискать готовую функцию перевода HEX to DEC, но все они возвращают число типа Double вида
1.2885683209031E+17 и getLast это не понимает
Понимаю, что проблема звучит смешной, но функцию getLast я не понимаю и потому преобразовать число в понятный для ее работы вид не могу...