为什么把byte转成int的时候不与一下0xff就会出错呢?
public class HelloWorld {
public byte[] int2Byte(int n){
byte[] arr=new byte[4];
for(int i=0;i<4;++i){
arr[i]=(byte)((n>>i*8)&0x00ff);
}
return arr;
}
public int byte2Int(byte[] arr){
int n=0;
for(int i=0;i<4;++i){
//n+=(int)((arr[i]&0xff)<<i*8);
n+=(int)(arr[i]<<i*8);//这样写的话结果会出错
}
return n;
}
public static void main(String[] args) {
HelloWorld h=new HelloWorld();
byte[] a=h.int2Byte(8143);
for(int i=0;i<4;++i){
System.out.println(Integer.toBinaryString(a[i]));
}
System.out.println(h.byte2Int(a));
}
}