C++ 小练习,按位存储时间并获取时间

#include <iostream>
using namespace std;
#include<string>
//按位取得年份,年份用第一个字节的前7位存储,则将该字节向右移动一位即可获得
int GetYear(const unsigned char buffer)
{
    int  mask = buffer>> 1;
    return mask;
}
//按位获取月份  传入的参数,月份的存储4个位,为第一个字节的第8位和第二个字节的前三位,
//所以将第一个字节与1进行与运算获得最后一个位的值并向左移3位
//将第二个字节的值向右移动5个bit位,获得后三位的的值,两个值相加则得到月份
int GetMonth(const unsigned char* buffer)
{
    unsigned char mask = buffer[0] & 1 << 3;
    unsigned char mask1 = buffer[1] >> 5;    
    return mask+mask1;
}
//获取日期, 日期取最后5个bit位,所以要将该字节的前三位置零  则要用0x1F与运算,则得到数值并返回
int GetDay(const unsigned char buffer)
{
    unsigned char mask = buffer & 0x1F;
    return mask;
}
int main()
{
    //用2个字节来存储年月日2026年12月31日
    //126         12    31
    //1111110    1100  11111
    //1111 1101  1001  1111
    //F     D    9     F
    //0xFD        0x9F
    unsigned char buffer[2] = { 0xFD, 0X9F };

//     printf_status(buffer[0]);
//     printf_status(buffer[1]);

    unsigned int m_year = GetYear(buffer[0])+1900;
    unsigned int m_month=GetMonth(buffer);
    unsigned int m_day = GetDay(buffer[1]);

    cout << m_year << "" << m_month << "" << m_day << "" << endl;
    return 0;

}

程序运行的结果为:2026年12月31日

posted @ 2020-04-12 15:17  神迹丶  阅读(488)  评论(0编辑  收藏  举报
网站已运行: