Неправильное преобразование time_t в char

У меня есть простой пример кода, который я хочу преобразовать из массива time_t в символы, чтобы затем объединить его в другой массив. Код:

time_t unixt;
char exm [40];


unixt = RTC.get();
Serial.println(unixt);
dtostrf(unixt, 10, 0, exm);
Serial.println(exm);

Проблема, с которой я столкнулся, заключается в том, что консоль каждый раз печатает другое второе сообщение, вот так:

1548258220
1548258200

Я также пробовал использовать unsigned long, но тоже безрезультатно. Может ли кто-нибудь указать мне, что не так, или как это сделать по-другому?

, 👍2


1 ответ


Лучший ответ:

5

Используйте ultoa() вместо dtostrf(). Первый предназначен для сериализации длинные целые числа без знака, а последний — для чисел с плавающей запятой. Используя dtostrf(), вы неявно преобразуете unixt в число с плавающей запятой. Arduino Mega поддерживает только одинарную точность. с плавающей запятой, поэтому это преобразование приводит к некоторой потере точности, следовательно результат, который вы видите.

,

Большое спасибо! Это было именно то, что мне нужно., @billyVal