Что за странный формат даты и времени,
Есть прога которая пишет в бинарный файл данные, среди них дата и время.
Данные занимают 8 байт, время получается с тиками и занимает 5 байт. Данные в файле можно изменять hex редактором, запускать программу, ждать около минуты и прочитать дату и время в формате месяц.день.год часы:минуты:секунды
Так получилось несколько измерений отдельно для даты (3 байта) и отдельно для времени (5 байт).
Но алгоритм кодирования пока остался непонят. Может кто увидит знакомые цифры?
время, дата особого смысла не имеет. Точнее если менять время то нужно учитывать только 1F FF FF FF FF
00 00 00 00 00 21.02.2012 00:00:00 53 D1 AC 10 00 21.02.2012 14:51:50 53 D0 AC 10 00 21.02.2012 14:51:40 53 D2 AC 10 00 21.02.2012 14:52:00 01 00 00 00 00 21.02.2012 00:45:00 08 00 00 00 00 21.02.2012 06:00:00 10 00 00 00 00 21.02.2012 12:00:00 20 00 00 00 00 22.02.2012 00:00:00 00 00 10 00 00 21.02.2012 00:00:00 00 00 80 00 00 21.02.2012 00:00:04 06 C0 00 00 00 21.02.2012 05:03:44 01 55 5A 13 F0 21.02.2012 01:00:00 1B 00 60 13 BC 21.02.2012 20:15:02 1D 8E 6C 7B A8 21.02.2012 22:10:02 1D 8E 75 01 B0 21.02.2012 22:10:02 1D 99 75 01 B0 21.02.2012 22:11:58 1E 99 75 01 B0 21.02.2012 22:56:58 1F 99 75 01 B0 21.02.2012 23:41:58 1F AA 75 01 B0 21.02.2012 23:44:56 20 00 75 01 B0 22.02.2012 00:00:04 1D 3B AA 95 D0 21.02.2012 21:50:28 00 20 00 00 00 21.02.2012 00:05:36 00 01 00 00 00 21.02.2012 00:00:10 00 06 00 00 00 21.02.2012 00:01:02 00 08 00 00 00 21.02.2012 00:01:24 00 09 00 00 00 21.02.2012 00:01:34 00 0A 00 00 00 21.02.2012 00:01:44 00 0B 00 00 00 21.02.2012 00:01:56
38 . 00 0B 00 00 00 21.02.2012 00:01:56 39 . 00 00 30 8b 91 xx.xx.xxxx 00:00:01 00:00:00 3181457 3'181'457.25 40 . 00 00 61 17 23 xx.xx.xxxx 00:00:02 00:00:02 6362915 41 . 00 00 91 a2 b4 xx.xx.xxxx 00:00:03 00:00:02 9544372 42 . 00 00 c2 2e 45 xx.xx.xxxx 00:00:04 00:00:04 12725829 43 . 00 00 f2 b9 d6 xx.xx.xxxx 00:00:05 00:00:04 15907286 44 . 00 0b 60 b6 0b xx.xx.xxxx 00:01:00 190887435 45 . 01 55 55 55 55 xx.xx.xxxx 00:30:00 5726623061 30*60=1800 46 . 02 aa aa aa ab xx.xx.xxxx 01:00:00 11453246123 47 . 04 00 00 00 00 xx.xx.xxxx 01:30:00 17179869184 48 . 05 55 55 55 55 xx.xx.xxxx 02:00:00 22906492245 49 . 0a aa aa aa ab xx.xx.xxxx 04:00:00 50 . 15 55 55 55 55 xx.xx.xxxx 08:00:00
Дата
40e600 10.05.2023 00:00:00 400000 wrong 000000 empty 010101 wrong 40e500 30.07.2017 00:00:00 40e400 21.02.2012 00:00:00 40e300 14.07.2006 00:00:00 40e000 17.09.1989 00:00:00 40df00 28.11.1986 00:00:00 40de00 08.02.1984 00:00:00 40dd00 20.03.1981 00:00:00 40dcff 16.04.1981 00:00:00 40dcf4 03.03.1981 00:00:00 40dcf0 15.02.1981 00:00:00 40dce0 13.12.1980 00:00:00 40dca0 01.04.1980 00:00:00 40dc90 28.01.1980 00:00:00 40dc8e 20.01.1980 00:00:00 40dc88 unknown 40dc40 unknown 40dc00 unknown 40db00 unknown 40da00 unknown 40d800 unknown 40d000 unknown
Стыбрил биты из времени. И нашел как можно любую дату по желанию записывать
40dcf00 010000001101110011110 00000 00 15.02.1981 00:00:00 40dce0 13.12.1980 00:00:00 40dca0 010000001101110010100000 01.04.1980 00:00:00 40dc900 0100000011011100100100000000 28.01.1980 00:00:00 28 = 00011100 40dc8e0 0100000011011100100011100000 20.01.1980 00:00:00 20 = 00010100 40dc8e2 0100000011011100100011100010 20.01.1980 12:00:00 20 = 00010100 40dc8e4 0100000011011100100011100100 21.01.1980 00:00:00 21 = 00010101 40dc8e8 0100000011011100100011101000 22.01.1980 00:00:00 22 = 00010110 40dc8ef 0100000011011100100011101111 23.01.1980 18:00:00 23 = 00010111 40dc8ee 0100000011011100100011101110 23.01.1980 12:00:00 23 = 00010111 40dc8ea 0100000011011100100011101010 22.01.1980 12:00:00 22 = 00010110 40dc8ec 010000001101110010001 11011 00 23.01.1980 00:00:00 23 = 00010111 40dc894 010000001101110010001 00101 00 01.01.1980 00:00:00 40dc898 010000001101110010001 00110 00 02.01.1980 00:00:00 40dc89c 010000001101110010001 00111 00 03.01.1980 00:00:00 40dc8a0 010000001101110010001 01000 00 04.01.1980 00:00:00 40dc8a4 010000001101110010001 01001 00 05.01.1980 00:00:00 40dc8b0 010000001101110010001 01100 00 08.01.1980 00:00:00 40dc8cc 010000001101110010001 10011 00 15.01.1980 00:00:00 40dc948 010000001101110010010 10010 00 15.02.1980 00:00:000x40dc894 = 17003045 = 01.01.1980
42 . 40dc948 01000000110111001 0010 10010 00 15.02.1980 00:00:00 43 . 40dc9bc 01000000110111001 0011 01111 00 15.03.1980 00:00:00 44 . 40dca38 01000000110111001 0100 01110 00 15.04.1980 00:00:00 45 . 40dcab0 01000000110111001 0101 01100 00 15.05.1980 00:00:00 46 . 40dcb2c 01000000110111001 0110 01011 00 15.06.1980 00:00:00 47 . 40dcba4 01000000110111001 0111 01001 00 15.07.1980 00:00:00 48 . 40dcc20 01000000110111001 1000 01000 00 15.08.1980 00:00:00 49 . 40dcc9c 01000000110111001 1001 00111 00 15.09.1980 00:00:00 50 . 40dcd14 01000000110111001 1010 00101 00 15.10.1980 00:00:00 51 . 40dcd90 01000000110111001 1011 00100 00 15.11.1980 00:00:00 52 . 40dce08 01000000110111001 1100 00010 00 15.12.1980 00:00:00 53 . 40dd3bc 01000000110111010 0111 01111 00 15.12.1981 00:00:00 54 . 40dd970 01000000110111011 0010 11100 00 15.12.1982 00:00:00 55 . 40ddf24 01000000110111011 1110 01001 00 15.12.1983 00:00:00 56 . 40de4dc 01000000110111100 1001 10111 00 15.12.1984 00:00:00
ну, может программка умная, использует кадендарь. Если видит во времени запись "24 часа" то не ругается я прибавляет день.
А что для
40 00 00 00 00
посчитает?
А вообще странная штука, конечно. Почему-то
00 00 00 00 00 21.02.2012 00:00:00 00 00 10 00 00 21.02.2012 00:00:00
Третий байт ни на что не влияет? :) Казалось бы. Но нет! Влияет!
00 00 80 00 00 21.02.2012 00:00:04
капец. Т.е. 0x10 = 16 = 0 секунд, а 0x80 = 128 = 4 секунды. Что он там считает? 1/30 секунды? :)
А можно, заради интереса, значения времени, которые для всех значений 3-го байта сгенерируются? т.е. 00 00 хх 00 00 и прогнать хх от 00 до FF
P.S. А время с миллисекундами можно увидеть?
Может кто увидит знакомые цифры?
------
Эээ...
1. Конвертни, плс, из текущего программного в хех-децимальное длинного целого - запись, похоже, с физ.порядком байт.
2. Пропиши 40 строк (5 байт по 8 бит) с единичным битом на запись - хоть примерно оценишь какой бит на сколько весит.
P.S. А время с миллисекундами можно увидеть?
увы нет
А можно, заради интереса, значения времени, которые для всех значений 3-го байта сгенерируются?
Для всех будет долго, у меня старт проги с большим каталогом занимает около минуты, оставлять только тест боюсь. Непонятно как весь каталог потом загрузить.
Что то попробую. Но сегодня наметил дату...
Для начала непонятен сам принцип кодирования.
Думал по дате, может 5 бит на день - фигвам также. Нафиг кому то еще и дату/время кодировать специально. Хотя там вопросов еще море по остальным полям
Добавил новые измерения, теперь могу задавать любую дату и видимо время.
Конвертни, плс, из текущего программного в хех-децимальное длинного целого - запись, похоже, с физ.порядком байт.
не понял
(5 байт по 8 бит) с единичным битом на запись - хоть примерно оценишь какой бит на сколько весит.
битовую волну хочешь? Ну примерно понятно, что где лежит, но общая схема не вырисовывается.
Для начала непонятен сам принцип кодирования.
-------
Весьма вероятный вариант
https://stackoverflow.com/questions/6274878/what-is-c-time...
Весьма вероятный вариант
фигвам. Можно было еще долго гадать, пока не оказалось, что прога написано на Дельфи.
Дата там кодируется как вещественное число. Дни от 30.12.1889 и время от 0 до 1.0
Хотя с переводом времени не всё получается перевести - 15:43:38, набегает 15:43:40. Но остальной десяток тестов правильно.
PS: проблема только в том, что данное время с миллисекундами, их нужно еще как-то учитывать