Re: Как распаковать время последней модификации файла



Posted by Аркадий Водяник (195.206.226.15) on May 26, 2001 at 22:24:30:

In Reply to: Как распаковать [SED 'ldt.+[INTSNI]']? posted by Александр,Киев on May 25, 2001 at 06:03:32:

Проблема: Оператор loaddir заносит в extrd.dat время
последней модификации файла в виде числа, возвращаемого
Windows. Надо распаковать это число, чтобы работать с
обычными единицами времени.

Решение: Windows возвращает упакованное время в
32-битном числе; здесь показано назначение битовых полей:


0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
|-year------| |-mon-| |-day---| |-hour--| |-min-----| |-sec---|

Ниже показан пример распаковки. Обратите внимание, что для
хранения секунд используется только 5 бит (числа от 0 до 31),
поэтому время сохраняется с точностью две секунды.
Для хранения года используется 7 бит (числа от 0 до 127),
там указывается год минус 1980.


loaddir [dir 0]+'*.rpt'
t=[ged 'ldt.1']
Packed time: ^^^^^^^^^^^^^^^t

se=(t % 32)*2
Sec: ^se
t=[tr t/32]; mi=t % 64
Min: ^mi
t=[tr t/64]; ho=t % 32
Hour: ^ho
t=[tr t/32]; da=t % 32
Day: ^da
t=[tr t/32]; mo=t % 16
Month: ^mo
ye=t/16+1980
Year: ^^^ye




Пpишедшие ответы: