时间戳和字节数组

时间:2010-05-18 17:14:42

标签: c++ timestamp bytearray

我正在尝试将时间戳(小时:分钟:秒)插入到一个双字节数组中,我对如何完成此操作感到有些困惑...非常感谢任何帮助!

int Hour = CTime::GetCurrentTime().GetHour(); 
int Minute = CTime::GetCurrentTime().GetMinute(); 
int Second = CTime::GetCurrentTime().GetSecond(); 

BYTE arry[2];

//Need to insert 'Hour', 'Minute', & 'Second' into 'arry'

谢谢!

2 个答案:

答案 0 :(得分:4)

你做不到。一天中可能有86402秒(一天最多可以有两个闰秒),但byte[2]数组中可用的16位只能代表65536个单独的值。

答案 1 :(得分:1)

  1. 小时:分:秒不是人们所说的时间戳。时间戳是自1970-01-01以来经过的秒数,并且肯定不适合16位。
  2. 假设小时数范围= [0; 24],分钟= [0; 60],秒= [0; 60](包括闰秒),您将需要5 + 6 + 6 = 17位仍然不会适合16位。
  3. 如果您有一个32位数组,它将适合:

    int Hour = CTime::GetCurrentTime().GetHour(); 
    int Minute = CTime::GetCurrentTime().GetMinute(); 
    int Second = CTime::GetCurrentTime().GetSecond(); 
    
    uint8_t array[4];
    
    // Just an example
    *(uint32_t*)array = (Hour << 12) | (Minute << 6) | Second;
    

    这听起来有点像我的作业......或者这样做的目的是什么?