b已經(jīng)是8位byte類型,為什么要用0xff來去掉前面的24位呢?
哪句話是將b(byte類型)轉(zhuǎn)換成int類型的. Integer.toHexString(b&0xff)? 中, 括號里的b難道不是優(yōu)先運(yùn)算嗎,這時(shí)候應(yīng)該還是byte類型的吧,所有何來的必要將前面(按我的理解并不存在的)的24位去除呢,求大神指點(diǎn),謝謝
哪句話是將b(byte類型)轉(zhuǎn)換成int類型的. Integer.toHexString(b&0xff)? 中, 括號里的b難道不是優(yōu)先運(yùn)算嗎,這時(shí)候應(yīng)該還是byte類型的吧,所有何來的必要將前面(按我的理解并不存在的)的24位去除呢,求大神指點(diǎn),謝謝
2020-07-27
舉報(bào)
2020-07-30
個(gè)人理解在for循環(huán)的時(shí)候把byte元素傳到Integer.toHexString(b&0xff)的時(shí)候byte會自動(dòng)轉(zhuǎn)型成int類型,由于int類型是32位然后& 0xff 就是把前面24個(gè)0去掉只要低8位,最后打印出來的就是只保留低8位的形式
2022-06-25
這是byte轉(zhuǎn)化integer時(shí)出現(xiàn)的問題(因?yàn)橛玫氖莍nteger的方法),因?yàn)閎yte在java中是有正負(fù)的整數(shù),所以轉(zhuǎn)為integer是也是相應(yīng)的整數(shù),integer存儲大小為4個(gè)字節(jié),而byte為一個(gè)字節(jié),存在相應(yīng)擴(kuò)展,負(fù)數(shù)是補(bǔ)碼存儲,所以是前面添1,正數(shù)是原碼存儲所以添0,最后轉(zhuǎn)化為16進(jìn)制數(shù),前面的0省略,而1不能省略,所以通過&0xff取后八位有效位