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

关于读取字节的问题

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

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

正在回答

2 回答

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

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

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

春暖不开花 提问者

这个问题我现在想清楚了。
2016-01-05 回复 有任何疑惑可以回复我~
#2

春暖不开花 提问者

但是现在有个问题就是说,如果我想自己手动的用syso去输出一个int的负数,我直接syso(0xe8)这样输出出来还是个整数,这样是但不上负号的,那我应该采用什么方式,直接在控制台输出一个负数呢。
2016-01-05 回复 有任何疑惑可以回复我~
#3

春暖不开花 提问者

我知道哪里不对了。早晨起来突然明白了。
2016-01-05 回复 有任何疑惑可以回复我~
#4

Its_forever 回复 春暖不开花 提问者

哈哈,挺好。加油,共勉。
2016-01-05 回复 有任何疑惑可以回复我~
查看1条回复

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

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

春暖不开花 提问者

恩,是的,之前是我有个地方没想通。
2016-01-05 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

关于读取字节的问题

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