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