Модуль часов DS3231, преобразование UNIX TimeStamp uint32_t в uint64_t

KorPaEv
Offline
Зарегистрирован: 24.11.2014

Доброго времени суток!

Имеется модуль часов DS3231, пользуюсь либой отсюда

https://github.com/jarzebski/Arduino-DS3231

Соответственно можно выдернуть напрямую в юниксовом формате дату и время

DS3231 timeModule;
RTCDateTime dateTime;

dateTime = timeModule.getDateTime();
uint32_t  timeStampVal = dateTime.unixtime;

Вывожу в сериал, все красиво - 10 циферок времени

Но мне необходимо хранить время 8ю байтами, а не 4мя, поэтому вопрос - каким образом мне конвертировать HEX представление uint32 в HEX представление uint64? 

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

Ну, напишите в пятой строке uint64_t вместо нынешнего uint32_t.

Для чего это Вам может быть нужно не мне судить, но надо, так напишите.

KorPaEv
Offline
Зарегистрирован: 24.11.2014

Теперь уже не надо.

Ситуация была в следующем - сначала я думал что модуль времени как и сама ардуинка считает в миллисекундах, поэтому хранить юниксовый формат по стандарту надо 8ю байтами - число то огромное получается

Но как оказалось модуль часов считает секундами, поэтому библиотека заточена под uint32 и возвращает значение преобразованное под юниксовый формат именно в секундах и значение определено типом uint32..

Поэтому буду работать с uint32