You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When I print the gmt time it gives the correct time (in my case: 2024-09-23 12:42:58 GMT) but this unix time tamp generation method gives "3129255889" which clearly isn't correct. The issue is due to the use of a 32-bit unsigned integer (uint32_t) to store the Unix timestamp, which is expressed in microseconds. Given that Unix time represents the number of seconds since January 1, 1970, combining it with microseconds and storing it in a 32-bit integer is causing an overflow, as 32 bits can't handle such large values when combining both seconds and microseconds. To resolve this issue, a 64-bit integer (uint64_t) for the timestamp must be used to avoid overflow and store the complete value correctly. unit64_t tmst = (uint64_t)(now.tv_sec) * 1000000 + (uint64_t)(now.tv_usec); j = snprintf((char *)(buff_up + buff_index), TX_BUFF_SIZE - buff_index, "\"tmst\":%llu", tmst); // %llu for uint64_t
The text was updated successfully, but these errors were encountered:
When I print the gmt time it gives the correct time (in my case: 2024-09-23 12:42:58 GMT) but this unix time tamp generation method gives "3129255889" which clearly isn't correct. The issue is due to the use of a 32-bit unsigned integer (uint32_t) to store the Unix timestamp, which is expressed in microseconds. Given that Unix time represents the number of seconds since January 1, 1970, combining it with microseconds and storing it in a 32-bit integer is causing an overflow, as 32 bits can't handle such large values when combining both seconds and microseconds. To resolve this issue, a 64-bit integer (uint64_t) for the timestamp must be used to avoid overflow and store the complete value correctly.
unit64_t tmst = (uint64_t)(now.tv_sec) * 1000000 + (uint64_t)(now.tv_usec); j = snprintf((char *)(buff_up + buff_index), TX_BUFF_SIZE - buff_index, "\"tmst\":%llu", tmst); // %llu for uint64_t
The text was updated successfully, but these errors were encountered: