最近在项目中,遇到时间格式的一种存储方式-MCM【小端,低字节低地址】。
一,何为MCM时间?
MCM时间格式为节省卡内存储空间而生它可以表示2000年1月1日到2063年12月31日这段时间内任何一个时间。它总共由4个字节共32位二进制数组成,除年外【年只有后面的2位数,比如2019,只会存19】,月、日、时、分、秒分别按照其数据可能的最大值分配二进制位数,具体格式为:
时间名称 | 位数 | 位置 |
年 | 6 | 31b-26b |
月 | 4 | 25b-22b |
日 | 5 | 21b-17b |
时 | 5 | 16b-12b |
分 | 6 | 11b-6b |
秒 | 6 | 5b-0b |
比如,收到的原始报文0x79D96D19,转成2进制之后0111 1001 1101 1001 0110 1101 0001 1001,下划线对应着年,2进制011110对应着10进制30,再拼接"20",得到年份2030。依次类推
最终得到的时间就是2030年7月12日22时52分25秒。
二,具体的代码实现
Integer.toBinaryString