C++ 小练习,按位存储时间并获取时间
标签:char std sig end code 练习 bit name 左移
#include using namespace std;
#includestring>
//按位取得年份,年份用第一个字节的前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 "年" "月" "日" endl;
return 0;
}
程序运行的结果为:2026年12月31日
C++ 小练习,按位存储时间并获取时间
标签:char std sig end code 练习 bit name 左移
原文地址:https://www.cnblogs.com/shenji/p/12685364.html
评论