标签:char std sig end code 练习 bit name 左移
#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日
标签:char std sig end code 练习 bit name 左移
原文地址:https://www.cnblogs.com/shenji/p/12685364.html