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