为了账号安全,请及时绑定邮箱和手机立即绑定

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 是为了严谨性?

正在回答

2 回答

按这样说感觉就是为了严谨性

0 回复 有任何疑惑可以回复我~
#1

leowei 提问者

嗯 是
2016-11-14 回复 有任何疑惑可以回复我~

完全不懂这是在讲什么,求解释代码

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
二进制基础
  • 参与学习       99871    人
  • 解答问题       210    个

二进制是计算机唯一能识别的语言,是学习计算机技术必备的知识

进入课程

arr[0]=(byte)((int)(id>>0*8)&0xff);

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信