Кодировка дати и времени в 4 байта, как расшифровать алгоритм?
У меня есть 4 байта и я точно знаю какая это дата и время, но алгоритма нет, как узнать алгоритм?
11 90 82 FA = 16-12-2008 16:23:52
11 90 82 03 = 16-12-2008 16:16:06
11 90 81 F5 = 16-12-2008 16:15:42
11 90 81 F2 = 16-12-2008 16:15:36
11 90 81 60 = 16-12-2008 16:11:00
0F 0F 72 A3 = 15-08-2007 14:21:06
0F 0F 72 89 = 15-08-2007 14:20:18
Код:
(hours<<11) | (min<<5) | (sec>>1)
вообщем время в отличии от юникс-тайма разбито по полям первые 5 бит на секунды, секунды идут с шагом 2(именно обратив внимание на этот момент удалось расшифровать дальше), следующие 6 бит на минуты и еще 5 бит на часы...
сейчас попробую расшивровать дальше...
...
30 минут спустя:
прикинув, что из оставшихся 16 бит, 5 бит нужно на число, 4 бит на месяц, и 7 бит остается на год,
быстро понял что в старшем слове(дата) первые 5 бит это число, следующие 4 бита это месяц, и остается год, год как оказалось считается от 2000
получается:
Код:
((year-2000)<<25) | (month<<21) | (date<<16) | (hrs<<11) | (min<<5) | (sec>>1)
и назад:
Код:
int year = (cipher_date >> 25) + 2000;
int month = (cipher_date >> 21) & 0x0f;
int date = (cipher_date >> 16) & 0x1f;
int hrs = (cipher_date >> 11) & 0x1f;
int min = (cipher_date >> 5) & 0x3f;
int sec = (cipher_date << 1) & 0x3f;
int month = (cipher_date >> 21) & 0x0f;
int date = (cipher_date >> 16) & 0x1f;
int hrs = (cipher_date >> 11) & 0x1f;
int min = (cipher_date >> 5) & 0x3f;
int sec = (cipher_date << 1) & 0x3f;
теперь можно спокойно идти спать;)
Большое спасибо. Все получилось. :)
Люди, вы издеваетесь? Не легче посмотреть в сторону стандартных функций обработки времени в винде?
Цитата: Dart Bobr
Люди, вы издеваетесь? Не легче посмотреть в сторону стандартных функций обработки времени в винде?
Это скучно.
Цитата: Dart Bobr
Люди, вы издеваетесь? Не легче посмотреть в сторону стандартных функций обработки времени в винде?
эээ... вроде как в винде другие форматы времени используются...
Это вобще не винда, и даже не ПК, так что копать в сторону стандартных функций нет смысла.
Если бы это было так просто то я не задавал вопрос.
Так что большое спасибо alt@zir.
Excellent tips .I really appreciate all these points, and I agree completely…