我接收到一个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.这个程序应该怎么写?谢谢指导
调试欢乐多
int a = aa[0]*256+aa[1];
然后用伪运算来判断,比如:
if ( (a & 2) > 0 ) //判断第二位是否有值也可以转成二进制字符串:
Integer.toBinaryString(a)
然后再按字符串位置处理。
这样写是没错,但是如果Integer.toBinaryString(aa[0]);解析出来的就不是我要的数了只要aa[0]大于0x7f,直接用Integer.toBinaryString(aa[0]);解析出来的就不对了
int dns;
if(aa[0]<0))
{
dns = 256 +aa[0];
}
else
{
dns =aa[0];
}
String str4=Integer.toBinaryString(dns);
就是还需要判断,str4前面可能需要补0(凑够8位)