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