有一个byte类型的16进制数据要把这个16进制数据左移一位如果是1那么就做A操作如果左移出来的是0那么就做B操作不知道各位有什么好的做法没有?以下是我现在的做法public String hexToBin(int b){
String a = Integer.toBinaryString(b);
for(int i=0;a.length()<8;i++){
a = "0" + a;
}
if("1".equals(a.substring(0,1))){
System.out.println("A");
} else {
System.out.println("B");
}
System.out.println(a);
return a;
}
String a = Integer.toBinaryString(b);
for(int i=0;a.length()<8;i++){
a = "0" + a;
}
if("1".equals(a.substring(0,1))){
System.out.println("A");
} else {
System.out.println("B");
}
System.out.println(a);
return a;
}
String s = hex2Bin((byte)5);
System.out.println(s);
}private static String hex2Bin(byte b) {
int num = (int) b;
String a = Integer.toBinaryString(num);
for (int i = 0; a.length() < 8; i++) {
a = "0" + a;
}
if (((num >> 8) & 1) == 1) {
System.out.println("A");
} else {
System.out.println("B");
}
return a;
}或者你可以直接判断 Integer.toBinaryString(num) 之后的长度,小于 8 的话,那最左边的一位肯定是“0”了,等于 8 的话,最左边的一位就是“1”了。