arr[0]=(byte)((int)(id>>0*8)&0xff);
为什么 arr[0]=(byte)((int)(id>>0*8)&0xff); 中先(int)后(byte) java中不超过int的取值范围的数据类型,都会提升为int的,直接arr[0]=(byte)(id>>0*8&0xff) 不可以吗?
public static byte[]int2Bytes(int id){
byte[] arr=new byte[4];
arr[0]=(byte)(id>>0*8&0xff);
arr[1]=(byte)(id>>1*8&0xff);
arr[2]=(byte)(id>>2*8&0xff);
arr[3]=(byte)(id>>3*8&0xff);
return arr;
}
我算了一下,结果也对
System.out.println(Arrays.toString(int2Bytes(8143)));
结果一样,[-49, 31, 0, 0] 那么 先int 是为了严谨性?