题目:8位数的日期字符串存进一个长为3的字节数组里面,然后再取出这8位数日期

本文介绍了如何将8位数的日期字符串(如2008-01-03)存储到长度为3的字节数组中,并详细解释了反向取出日期的算法过程,包括年取14位,月取4位,天取5位的逻辑,以及在处理过程中对符号位的处理方法。
摘要由CSDN通过智能技术生成

例如: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 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值