課程
/后端開(kāi)發(fā)
/Java
/文件傳輸基礎(chǔ)——Java IO流
代碼中,為什么要用b&0xff去掉前面的24個(gè)0呢?b是byte類型,本身就只有8位啊
2017-09-08
源自:文件傳輸基礎(chǔ)——Java IO流 1-1
正在回答
我也沒(méi)明白,感覺(jué)他們的回答沒(méi)有理解你的意思,是說(shuō)b是byte類型的什么時(shí)候轉(zhuǎn)換成int類型的了,既然已經(jīng)是byte類型只有8位那為什么要進(jìn)行去掉前面24位的操作呢
正如你所說(shuō),byte只有8位,然后int有32位,所以byte轉(zhuǎn)換為int,int的前面24位是無(wú)意義的(就是跟轉(zhuǎn)換過(guò)來(lái)的值無(wú)關(guān)),所以0xff=0000 0000 0000 0000 0000 0000 1111 1111 & b可以保留后8位的數(shù)值,前面24位不管是0還是1都會(huì)為0不顯示。
因?yàn)镮nteger.toHexString()方法,此方法返回的字符串表示的無(wú)符號(hào)整數(shù)參數(shù)所表示的值以十六進(jìn)制(基數(shù)為16)。謝謝
將byte轉(zhuǎn)換為int 高24位會(huì)補(bǔ)1 0xff的二進(jìn)制表示是11111111 高二十四位補(bǔ)0 所以0&1為0 這樣就去掉了int的高24位的字節(jié)
?
你試試不加。就有可能變成:ffffffc4
正如你所說(shuō),byte只有8位,我們也只需要用到8位
加上0xff就可以把后面2位(即8位)留下c4,前面補(bǔ)0
為了只截取后面8位。
16k閃存大腦3954634 提問(wèn)者
舉報(bào)
為您介紹IO流的使用,以及對(duì)象的序列化和反序列化的內(nèi)容
2 回答為什么toHexString()里要加&0xff?是什么意思?
3 回答老師的System.out.print(Integer.toHexString(buf[i]&0xff)+" ");句中為什么要加0xff?
1 回答0xff什么意思?
5 回答為什么4-1中的例子補(bǔ)0,不需要&0xff,但是用字節(jié)數(shù)組byte[i]比較的時(shí)候要&0xff
2 回答b已經(jīng)是8位byte類型,為什么要用0xff來(lái)去掉前面的24位呢?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號(hào)-11 京公網(wǎng)安備11010802030151號(hào)
購(gòu)課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號(hào)
2020-07-27
我也沒(méi)明白,感覺(jué)他們的回答沒(méi)有理解你的意思,是說(shuō)b是byte類型的什么時(shí)候轉(zhuǎn)換成int類型的了,既然已經(jīng)是byte類型只有8位那為什么要進(jìn)行去掉前面24位的操作呢
2019-02-20
正如你所說(shuō),byte只有8位,然后int有32位,所以byte轉(zhuǎn)換為int,int的前面24位是無(wú)意義的(就是跟轉(zhuǎn)換過(guò)來(lái)的值無(wú)關(guān)),所以0xff=0000 0000 0000 0000 0000 0000 1111 1111 & b可以保留后8位的數(shù)值,前面24位不管是0還是1都會(huì)為0不顯示。
2018-07-31
因?yàn)镮nteger.toHexString()方法,此方法返回的字符串表示的無(wú)符號(hào)整數(shù)參數(shù)所表示的值以十六進(jìn)制(基數(shù)為16)。謝謝
2018-05-04
將byte轉(zhuǎn)換為int 高24位會(huì)補(bǔ)1 0xff的二進(jìn)制表示是11111111 高二十四位補(bǔ)0 所以0&1為0 這樣就去掉了int的高24位的字節(jié)
?
2017-12-22
你試試不加。就有可能變成:ffffffc4
正如你所說(shuō),byte只有8位,我們也只需要用到8位
加上0xff就可以把后面2位(即8位)留下c4,前面補(bǔ)0
2017-09-08
為了只截取后面8位。