首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

&运算符解决办法

2013-10-15 
&运算符我看到公司项目代码中有这样的代码return src[offset + i] & 0xff 其中src 是一个 byte[] 类型src

&运算符
我看到公司项目代码中有这样的代码

return src[offset + i] & 0xff ;

其中src 是一个 byte[] 类型

src[offset + i] & 0xff 得到的结果肯定就是src[offset + i ]啊 ,为什么还要 &0xff 这样操做一下?
[解决办法]
如果src[offset + i]为负数怎么办?
[解决办法]
Java中的一个byte,其范围是-128~127的,而Integer.toHexString的参数本来是int,如果不进行&0xff, 那么当一个byte会转换成int时,对于负数,会做位扩展,举例来说,一个byte的-1(即0xff),会被转换成int的-1(即 0xffffffff),那么转化出的结果就不是我们想要的了。
 
而0xff默认是整形,所以,一个byte跟0xff相与会先将那个byte转化成整形运算,这样,结果中的高的24个比特就总会被清0,于是结果总是我 们想要的。


以上情况都是基于“你要把一个byte转换为int的时候用的
你看看你们公司的这个函数返回值是什么类型 是不是int型

 
[解决办法]
&0xff 会将byte类型值变成int类型的值,同时将-128~0之间的负值都转成正值

热点排行