關(guān)于讀取字節(jié)的問題
老師說每次讀取字節(jié)的時(shí)候讀取的是低八位的。那如果一個(gè)int變量,高八位不全是0,那讀出來的字節(jié)數(shù)據(jù)豈不是就是錯(cuò)誤的了。
關(guān)于這個(gè)一直挺困惑,請(qǐng)大神解答。
老師說每次讀取字節(jié)的時(shí)候讀取的是低八位的。那如果一個(gè)int變量,高八位不全是0,那讀出來的字節(jié)數(shù)據(jù)豈不是就是錯(cuò)誤的了。
關(guān)于這個(gè)一直挺困惑,請(qǐng)大神解答。
2016-01-04
舉報(bào)
2016-01-04
Java 中的一個(gè)byte,其范圍是-128~127的,如果不進(jìn)行&0xff,那么當(dāng)一個(gè)byte會(huì)轉(zhuǎn)換成int時(shí),對(duì)于負(fù)數(shù),會(huì)做位擴(kuò)展,舉例來說,一個(gè)byte的-1(即0xff),會(huì)被轉(zhuǎn)換成int的-1(即0xffffffff ), 那么轉(zhuǎn)化出的結(jié)果就不是我們想要的了。?
而0xff默認(rèn)是整形,所以,一個(gè)byte跟0xff相與會(huì)先將那個(gè)byte轉(zhuǎn)化成整形運(yùn)算,結(jié)果的高24位就會(huì)被清0,這是我們想要的結(jié)果。
?看看這篇博客吧,http://makemyownlife.iteye.com/blog/1047717
很好的解答了你的問題。希望能幫到你。
2016-01-04
每次讀低八位,并不代表剩下的不讀啊。