我有一个二进制文件,我把他读到byte数组中
我想取出其中的32位,把他转换成String显示,如“10111110000010011000000001000100”
然后去掉高2位(如例中的“10”)
剩下的30位(例中“111110000010011000000001000100”)分为2个15位
分别为A(“111110000010011”)和B(“000000001000100”)
然后要把A和B转换为十进制数显示
结果应该是A=-15379 B=68
上面的不对,我晕,我少输入了一个符号位,搞半天自己就说怎么不对。
应该是这样:
int num = Integer.parseInt("1111110000010011000000001000100", 2);
short A = (short)((num >> 15) & 0xBFFF) ;
short B = (short)(num & 0x7FFF);
System.out.println(A + "-:-" + B);
读到字节数组 然后去处理
String str = "10111110000010011000000001000100";
str = str.substring(2, str.length());//去掉前2位
String a = str.substring(0,str.length()/2);//截取前一段
String b = str.substring(str.length()/2 , str.length());//截取后一段
System.out.println("A=" + Integer.valueOf(a, 2)+",B=" + Integer.valueOf(b, 2));
int num = Integer.parseInt("111110000010011000000001000100", 2);
short num1 = (short)(num & 0x7FFF);
short num2 = (short)((num >> Ox0F) & 0xBFFF ^ -2) ;
应该是这样的。
num1是B num2是A
[code="java"]int num = Integer.parseInt("111110000010011000000001000100", 2);
short A = (short)((num >> 15) & 0xBFFF ^ -0x02) ;
short B = (short)(num & 0x7FFF);[/code]