Deutsch

Что за странный формат даты и времени,

1029  1 2 все
AlexNek патриот01.02.24 00:00
AlexNek
01.02.24 00:00 

Есть прога которая пишет в бинарный файл данные, среди них дата и время.

Данные занимают 8 байт, время получается с тиками и занимает 5 байт. Данные в файле можно изменять hex редактором, запускать программу, ждать около минуты и прочитать дату и время в формате месяц.день.год часы:минуты:секунды

Так получилось несколько измерений отдельно для даты (3 байта) и отдельно для времени (5 байт).

Но алгоритм кодирования пока остался непонят. Может кто увидит знакомые цифры?

#1 
AlexNek патриот01.02.24 00:06
AlexNek
NEW 01.02.24 00:06 
в ответ AlexNek 01.02.24 00:00, Последний раз изменено 01.02.24 23:40 (AlexNek)

время, дата особого смысла не имеет. Точнее если менять время то нужно учитывать только 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										

#2 
AlexNek патриот01.02.24 00:08
AlexNek
NEW 01.02.24 00:08 
в ответ AlexNek 01.02.24 00:06, Последний раз изменено 01.02.24 23:42 (AlexNek)

Дата

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:00
0x40dc894 = 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
#3 
Отпускник завсегдатай01.02.24 08:39
NEW 01.02.24 08:39 
в ответ AlexNek 01.02.24 00:00

Есть подозрение, что в этих пяти байтах не только время

20 00 00 00 00        22.02.2012 00:00:00
00 00 10 00 00        21.02.2012 00:00:00



#4 
MrSanders коренной житель01.02.24 10:49
NEW 01.02.24 10:49 
в ответ Отпускник 01.02.24 08:39, Последний раз изменено 01.02.24 13:33 (MrSanders)

ну, может программка умная, использует кадендарь. Если видит во времени запись "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. А время с миллисекундами можно увидеть?

#5 
Бесконечный цикл постоялец01.02.24 12:51
NEW 01.02.24 12:51 
в ответ Отпускник 01.02.24 08:39
Есть подозрение, что в этих пяти байтах не только время

Послание от инопланетян?


#6 
Murr патриот01.02.24 13:35
Murr
NEW 01.02.24 13:35 
в ответ MrSanders 01.02.24 10:49

Что он там считает? 1/30 секунды? :)

-------

А что тут такого?

время на писюках считается в тиках. 1 тик = 1/20 секунды. Остальное - погрешности.

#7 
Murr патриот01.02.24 13:43
Murr
NEW 01.02.24 13:43 
в ответ AlexNek 01.02.24 00:00

Может кто увидит знакомые цифры?

------

Эээ...

1. Конвертни, плс, из текущего программного в хех-децимальное длинного целого - запись, похоже, с физ.порядком байт.

2. Пропиши 40 строк (5 байт по 8 бит) с единичным битом на запись - хоть примерно оценишь какой бит на сколько весит.

#8 
MrSanders коренной житель01.02.24 14:00
NEW 01.02.24 14:00 
в ответ Murr 01.02.24 13:35, Последний раз изменено 01.02.24 14:02 (MrSanders)
А что тут такого?время на писюках считается в тиках. 1 тик = 1/20 секунды. Остальное - погрешности.

Точно не 1/20. Меньше. Не на 20 :)
Во, нашёл. 65536 times per hour, or about 18.2 times per second.

#9 
Murr патриот01.02.24 14:18
Murr
NEW 01.02.24 14:18 
в ответ MrSanders 01.02.24 14:00

Это таки как-то существенно повлияет на ситуацию?

1/30, 1/20, 18.2 в секунду - одного порядка цифирьки...

#10 
MrSanders коренной житель01.02.24 14:23
NEW 01.02.24 14:23 
в ответ Murr 01.02.24 14:18

Чтобы никто не удивлялся (как я), кто это число уже видел.

#11 
AlexNek патриот01.02.24 17:39
AlexNek
NEW 01.02.24 17:39 
в ответ Отпускник 01.02.24 08:39
Есть подозрение, что в этих пяти байтах не только время

ну так для этого дату и оставил, можно конечно биты перенести, но увы ничего особо не меняет


#12 
AlexNek патриот01.02.24 17:55
AlexNek
NEW 01.02.24 17:55 
в ответ MrSanders 01.02.24 10:49
P.S. А время с миллисекундами можно увидеть?

увы нет хммм


А можно, заради интереса, значения времени, которые для всех значений 3-го байта сгенерируются?

Для всех будет долго, у меня старт проги с большим каталогом занимает около минуты, оставлять только тест боюсь. Непонятно как весь каталог потом загрузить.

Что то попробую. Но сегодня наметил дату...


Для начала непонятен сам принцип кодирования.

Думал по дате, может 5 бит на день - фигвам также. Нафиг кому то еще и дату/время кодировать специально. Хотя там вопросов еще море по остальным полям

Добавил новые измерения, теперь могу задавать любую дату и видимо время.

#13 
AlexNek патриот01.02.24 17:57
AlexNek
NEW 01.02.24 17:57 
в ответ Murr 01.02.24 13:43
Конвертни, плс, из текущего программного в хех-децимальное длинного целого - запись, похоже, с физ.порядком байт.

не понял смущ


(5 байт по 8 бит) с единичным битом на запись - хоть примерно оценишь какой бит на сколько весит.

битовую волну хочешь? Ну примерно понятно, что где лежит, но общая схема не вырисовывается.


#14 
Murr патриот01.02.24 22:41
Murr
NEW 01.02.24 22:41 
в ответ AlexNek 01.02.24 17:55

Для начала непонятен сам принцип кодирования.

-------

Весьма вероятный вариант

https://stackoverflow.com/questions/6274878/what-is-c-time...

#15 
Murr патриот01.02.24 22:54
Murr
NEW 01.02.24 22:54 
в ответ AlexNek 01.02.24 17:57

не понял

---------------

Смотри - порядок вывода байт для типа лонг/инт при бинарном выводе.

#16 
AlexNek патриот01.02.24 23:53
AlexNek
NEW 01.02.24 23:53 
в ответ Murr 01.02.24 22:41
Весьма вероятный вариант

По крайней мере, стала более понятна организация, как нашел метод задавать время и дату.

Неясна пока связь с МС Досом (1/1/1980), но видимо 1 сек = 3181457.25, хотя тоже странно

#17 
AlexNek патриот01.02.24 23:55
AlexNek
NEW 01.02.24 23:55 
в ответ Murr 01.02.24 22:54
Смотри - порядок вывода байт для типа лонг/инт при бинарном выводе.
Зачем? Давно известно для интела.
#18 
AlexNek патриот02.02.24 20:03
AlexNek
NEW 02.02.24 20:03 
в ответ Murr 01.02.24 22:41, Последний раз изменено 02.02.24 20:26 (AlexNek)
Весьма вероятный вариант

фигвам. Можно было еще долго гадать, пока не оказалось, что прога написано на Дельфи.

Дата там кодируется как вещественное число. Дни от 30.12.1889 и время от 0 до 1.0

Хотя с переводом времени не всё получается перевести - 15:43:38, набегает 15:43:40. Но остальной десяток тестов правильно.

PS: проблема только в том, что данное время с миллисекундами, их нужно еще как-то учитывать

#19 
Murr патриот02.02.24 23:29
Murr
NEW 02.02.24 23:29 
в ответ AlexNek 02.02.24 20:03

Ну и ладненько.

#20 
1 2 все