ищу как преобразовать дату из Hex XXXX в Dec dd.mm.yyyy

gudvin
Offline
Зарегистрирован: 14.08.2015

Ищу как преобразовать дату из Hex XXXX в Dec dd.mm.yyyy  например hex 4714   это 20.08.2015

может кто встречал такой scetch или пример или кусок из scetch?

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

А как дата преобразовалась в Нех?

gudvin
Offline
Зарегистрирован: 14.08.2015

дата в hex никак не преобразовалась, она просто считывается из eeprom в виде XXXX, а пример привел из онлайн переводчика в интернете.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Вы хотите получить помощь или в загадки поиграть? Какой нахрен гугле переводчик? Кто и как пихал дату в епром? Кто и как её оттуда читает? Можно посмотреть на скетч, который её считывает и увидеть, что он выдаёт?

gudvin
Offline
Зарегистрирован: 14.08.2015

я считал по определенному адресу из eeprom данные, они имеют вид в 16 ричном виде значение xxxx , в этом значении зашифрована дата, нужно преобразовать из 16 ричного то бишь hex к привычному виду, dd.mm.yyyy и привел пример конкретный что пусть это будет 4714    в hex    а в привычном виде это сегодняшняя дата 20.08.2015

Кому совсем непонятно, есть 16 ричное число 4714, нужно написать функцию и получить из него дату в привычном виде день, месяц, год

если хочется днамики, то например в окне терминала arduino отправляете 16 ричное число xxxx и в основном окне получаете дата =dd.mm.yyyy

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Вопрос всего лишь в том, почему это вдруг 0x4714 стало соответствовать текущей дате? Кто это придумал и почему именно 0x4714 - это сегодняшнее число, а, например, не 0x5618?

 

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Одна из самых распространенных теорий упаковки даты : Слева направо первые пять бит - дата, дальше четыре бита месяц, остальные смещение года, от какого то стартового года (что бы получить текцщий год нужно смещение сложить со стартовым). 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

gudvin пишет:

я считал по определенному адресу из eeprom данные, они имеют вид в 16 ричном виде значение xxxx , в этом значении зашифрована дата, нужно преобразовать из 16 ричного то бишь hex к привычному виду, dd.mm.yyyy и привел пример конкретный что пусть это будет 4714    в hex    а в привычном виде это сегодняшняя дата 20.08.2015

Кому совсем непонятно, есть 16 ричное число 4714, нужно написать функцию и получить из него дату в привычном виде день, месяц, год

если хочется днамики, то например в окне терминала arduino отправляете 16 ричное число xxxx и в основном окне получаете дата =dd.mm.yyyy

Я же Вам задал простой вопрос, кто её туда пишет??? Разные системы по-разному хранят даты. Если Вы скажете, какая система её туда записала, станет понятно каков её формат.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Держите. конечно, но так вопросы не задают. Пришлось гадать на кофейной гуще.

union {
	struct ShortDate {
		unsigned short day : 5;
		unsigned short month: 4;
		unsigned short year: 7;
	} db;
	unsigned dt;
} TestDate;

TestDate.dt = 0x4714;

char szBuffer[11];
sprintf(szBuffer,"%02d.%02d.%4d", TestDate.db.day, TestDate.db.month, TestDate.db.year + 1980);
Serial.println(szBuffer);

Должно вывестись 20.08.2015

Ардуины сейчас под рукой нет, но на обычном компьютере всё нормально выводится.

sandr4
sandr4 аватар
Offline
Зарегистрирован: 11.02.2015

ЕвгенийП пишет:

Держите. конечно, но так вопросы не задают. Пришлось гадать на кофейной гуще.

union {
	struct ShortDate {
		unsigned short day : 5;
		unsigned short month: 4;
		unsigned short year: 7;
	} db;
	unsigned dt;
} TestDate;

TestDate.dt = 0x4714;

char szBuffer[11];
sprintf(szBuffer,"%02d.%02d.%4d", TestDate.db.day, TestDate.db.month, TestDate.db.year + 1980);
Serial.println(szBuffer);

Должно вывестись 20.08.2015

Ардуины сейчас под рукой нет, но на обычном компьютере всё нормально выводится.

   Опробовал скетч - всё работает.

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

Аллилуйя!