春暖不开花
2016-01-04 21:28
老师说每次读取字节的时候读取的是低八位的。那如果一个int变量,高八位不全是0,那读出来的字节数据岂不是就是错误的了。
关于这个一直挺困惑,请大神解答。
Java 中的一个byte,其范围是-128~127的,如果不进行&0xff,那么当一个byte会转换成int时,对于负数,会做位扩展,举例来说,一个byte的-1(即0xff),会被转换成int的-1(即0xffffffff ), 那么转化出的结果就不是我们想要的了。
而0xff默认是整形,所以,一个byte跟0xff相与会先将那个byte转化成整形运算,结果的高24位就会被清0,这是我们想要的结果。
看看这篇博客吧,http://makemyownlife.iteye.com/blog/1047717
很好的解答了你的问题。希望能帮到你。
每次读低八位,并不代表剩下的不读啊。
文件传输基础——Java IO流
133754 学习 · 1030 问题
相似问题