首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

从byte数组中读取的16进制转化为2进制,该怎么处理

2012-05-15 
从byte数组中读取的16进制转化为2进制我接收到一个byte数组,假设:byte[] aa{(byte)0xfe,0x20}byte数组中

从byte数组中读取的16进制转化为2进制
我接收到一个byte数组,假设:byte[] aa={(byte)0xfe,0x20};byte数组中的数是十六进制的,现在我想知道每个十六进制数的各个位上是1还是0,就像oxfe是11111110,我想读出来每个位是1还是0,然后根据这个位是0还是1进行判断(1是打开,0是没打开),0xfe是11111110,我要读出来第7位是1,第6位是1,第5位是1,第4位是1,第3位是1,第2位是1,第1位是1,第0位是0.这个程序应该怎么写?谢谢指导

[解决办法]
Integer.toBinaryString(0xfe);
[解决办法]
首先转成数值,如:
 int a = aa[0]*256+aa[1];


然后用伪运算来判断,比如:
 if ( (a & 2) > 0 ) //判断第二位是否有值

也可以转成二进制字符串:
 Integer.toBinaryString(a)
然后再按字符串位置处理。
[解决办法]
其实用位运算速度最快,也不算难写,比如你需要判断第 n 位是否有值,那么就是:

if ((dns & (1<<(n-1))) System.out.println("第"+n+"位是1");

其中“<<”是移位运算,可以理解为乘2运算。

热点排行