从byte中取得各个bit的值

获取一个byte指定开始下标到结束下标的值,并转化为十进制

一个byte有8个bit,如何将一个byte指定一段bit转换为常用的数值呢?

首先需要明白,byte保存到bit实际是什么,简单讲,byte就是一个0和1组成的二进制数

如:0x01   =>  0000 0001

       0x02   =>  0000 0010

我们可以先将byte的每一个元素取出,然后截取指定一段元素,再将这段元素转换为常用值

Byte a = (Byte)0x01;

String bit0 = String.valueOf((b >> 7) & 0x1);//第一位

String bit1 = String.valueOf((b >> 6) & 0x1);//第二位

String bit2 = String.valueOf((b >> 6) & 0x1);//第三位

String bit3 = String.valueOf((b >> 4) & 0x1);//第四位

String bit4 = String.valueOf((b >> 3) & 0x1);//第五位

String bit5 = String.valueOf((b >> 2) & 0x1);//第六位

String bit6 = String.valueOf((b >> 1) & 0x1);//第七位

String bit7 = String.valueOf((b >> 0) & 0x1);//第八位

System.out.println(bit0+bit1+bit2+bit3+bit4+bit5+bit6+bit7);

//输出结果为: 00000001

//加入我们想取 第一位到第四位的bit,转为常用十进制值

int result =  Integer.parseInt(bit0+bit1+bit2+bit3,2);

System.out.println(result );

//输出结果为 0

最后整理得到如下方法,输入byte以及指定起始下标,返回常用的十进制值

public static Integer getLowConactHighEndForByte(byte b,int start,int end){
        String bitStr = "";
        for(int i=start;i<=end;i++){
            bitStr += String.valueOf((b >> (7-i)) & 0x1);
        }
        return Integer.parseInt(bitStr,2);
    }

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值