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

arr[0]=(byte)((int)(id>>0*8)&0xff);这里为啥要转化为int型?

这里为啥要转化为int型,转化为int型又转化为byte型这不是多此一举么?我试过不转化为int也可以,输出结果也是一样的。

正在回答

3 回答

确实不用转int

在基本类型数据当中,强制类型转换只发生在int、long、float和double之间。比int类型低或就是int型的像byte型、short型、char型、int型之间的转换不需要强制类型转换,也不存在着运算优先级和类型转换的问题
作者: wshyzx 
链接:http://www.imooc.com/article/15714
来源:慕课网

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

(int)是作用于(id>>0*8)的,这里id本身是int型,不管右移0、8、16、24位之后,移出位舍弃,空余位补0;应该还是int型,不需要转换;

(byte)是作用于(id>>0*8)&0xff这个整体的,因为要给字节数组元素arr[0]赋值,所以必须把int型转换为byte型

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

服务器和你开发的软件识别数据是不一样的,服务器大多是01c语言编的,因此得转换

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

举报

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

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

进入课程

arr[0]=(byte)((int)(id>>0*8)&0xff);这里为啥要转化为int型?

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