是否存在从零开始的毫秒或秒的基本时间戳示例?
如果我有一个8位无符号整数数组:
uint8_t array[10];
以某种方式可以将毫秒存储到第一个元素中,并将秒存储在数组的第二个元素中,如下所示:
array [0] =毫秒;
array [1] =秒;
答案 0 :(得分:1)
如果可能,我会使用uint16_t数组来存储毫秒数(或者使用更大的类型,具体取决于您需要存储的时间值的大小)。
由于你的评论暗示你出于某些原因无法做到这一点,我建议将其分解,以便最低有效位在第一个元素中,最高有效位在第二个元素中。例如,如果您的时间戳具有十六进制值0x1234
,则可以将其存储为
myArray[0] = 0x34;
myArray[1] = 0x12;
请注意,您可以读取和写入这些值,就像它们是16位值一样,虽然它们是8位值的数组,但是使用类型转换和指针,使用类似的东西
my16bitValue = ((uint16_t*)myArray)[0];
只要您以这种方式读写,处理器的字节顺序无关紧要。正如chux在下面指出的那样,如果你正在访问未正确对齐的边界上的内存(即内存地址不是该类型中字节数的倍数),那么你可能会得到一个段错误,或者至少是显着的性能下降,具体取决于您的架构。可能有更好的方法,但如果不了解更多关于你想要完成的事情,很难说。