例如:2008 - 01 - 03
思路:
首先1字节=8位
那么3字节= 24位
年份最高为9999 | 可以用 2位^14表示 | 也就是14 |
月份最高为12 | 可以用 2^4 表示 | 也就是4位 |
天数最高为31 | 可以用 2^5 表示 | 也就是5位 |
结果就是14 + 4 +5 = 23位(这就是计算好的,(0.0‘)呵呵)
public void threeBit() {
//y ->14位 m->4位 d->5位
int y = 2008, m = 1, d = 3;
byte[] save = new byte[3];
// 按照年月日的顺序存入24位中
y = y;
// 月左移14位放在年的高位上
m = m << 14;
// 日左移(14 + 4)位放在月年的高位上
d = d << (14 + 4);
// 做或运算 就将这个合并到23位中了
int swap = y | m | d;
// 0xff = 11111111 也就是8位,然后做与运算就可以得到这8位了
save[0] = (byte) (swap