C 神奇地撤销fprintf格式错误

C 神奇地撤销fprintf格式错误,c,C,我有一些代码记录来自设备的数据,并用系统时间(毫秒)标记这些数据 我使用了一个uint64\t来存储时间戳,它是这样创建的: struct timespec request; clock_gettime(CLOCK_REALTIME, &request); uint64_t stamp0 = (uint64_t)((uint64_t)request.tv_sec * 1000 + (uint64_t)request.tv_nsec / 1000000); fprintf(ptr,"%ld\

我有一些代码记录来自设备的数据,并用系统时间(毫秒)标记这些数据

我使用了一个
uint64\t
来存储时间戳,它是这样创建的:


struct timespec request;
clock_gettime(CLOCK_REALTIME, &request);
uint64_t stamp0 = (uint64_t)((uint64_t)request.tv_sec * 1000 + (uint64_t)request.tv_nsec / 1000000);

fprintf(ptr,"%ld\n",(long)stamp0);
然后我将时间戳写入文件(没有仔细考虑),如下所示:


struct timespec request;
clock_gettime(CLOCK_REALTIME, &request);
uint64_t stamp0 = (uint64_t)((uint64_t)request.tv_sec * 1000 + (uint64_t)request.tv_nsec / 1000000);

fprintf(ptr,"%ld\n",(long)stamp0);
现在我的文件中有不正确的时间戳,看起来像
1130802699
,但应该像
1478599582064


我能做些什么来修复我的错误吗?

我猜时间戳
1130802699
应该更像
1478599552523
而不是
1478599582064


如果是这样,您可以通过添加适当的1个时间戳的倍数来恢复时间戳,时间戳不完全匹配,因此我怀疑您是对的。幸运的是,这只是一个小时左右的过程,所以翻车应该不是问题。请你向我解释一下你是如何得出344这个值的?谢谢,这真的很有帮助,你帮了我很多忙。