问答详情
源自:4-2 字节流之文件输入流FileInputStream-2

关于读取字节的问题

老师说每次读取字节的时候读取的是低八位的。那如果一个int变量,高八位不全是0,那读出来的字节数据岂不是就是错误的了。

关于这个一直挺困惑,请大神解答。

提问者:春暖不开花 2016-01-04 21:28

个回答

  • Its_forever
    2016-01-04 22:14:01
    已采纳

    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

    很好的解答了你的问题。希望能帮到你。

  • 产品经理不是经理
    2016-01-04 22:19:05

    每次读低八位,并不代表剩下的不读啊。