C中的时间戳

时间:2014-01-13 21:52:42

标签: c arrays timestamp

是否存在从零开始的毫秒或秒的基本时间戳示例?

如果我有一个8位无符号整数数组:

uint8_t array[10];

以某种方式可以将毫秒存储到第一个元素中,并将秒存储在数组的第二个元素中,如下所示:

array [0] =毫秒;

array [1] =秒;

1 个答案:

答案 0 :(得分:1)

如果可能,我会使用uint16_t数组来存储毫秒数(或者使用更大的类型,具体取决于您需要存储的时间值的大小)。

由于你的评论暗示你出于某些原因无法做到这一点,我建议将其分解,以便最低有效位在第一个元素中,最高有效位在第二个元素中。例如,如果您的时间戳具有十六进制值0x1234,则可以将其存储为

myArray[0] = 0x34;
myArray[1] = 0x12;

请注意,您可以读取和写入这些值,就像它们是16位值一样,虽然它们是8位值的数组,但是使用类型转换和指针,使用类似的东西

 my16bitValue = ((uint16_t*)myArray)[0];

只要您以这种方式读写,处理器的字节顺序无关紧要。正如chux在下面指出的那样,如果你正在访问未正确对齐的边界上的内存(即内存地址不是该类型中字节数的倍数),那么你可能会得到一个段错误,或者至少是显着的性能下降,具体取决于您的架构。可能有更好的方法,但如果不了解更多关于你想要完成的事情,很难说。