亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

b已經是8位byte類型,為什么要用0xff來去掉前面的24位呢?

59b1fce8000157f612800720.jpg

哪句話是將b(byte類型)轉換成int類型的. Integer.toHexString(b&0xff)? 中, 括號里的b難道不是優先運算嗎,這時候應該還是byte類型的吧,所有何來的必要將前面(按我的理解并不存在的)的24位去除呢,求大神指點,謝謝

正在回答

2 回答

個人理解在for循環的時候把byte元素傳到Integer.toHexString(b&0xff)的時候byte會自動轉型成int類型,由于int類型是32位然后& 0xff 就是把前面24個0去掉只要低8位,最后打印出來的就是只保留低8位的形式

1 回復 有任何疑惑可以回復我~

這是byte轉化integer時出現的問題(因為用的是integer的方法),因為byte在java中是有正負的整數,所以轉為integer是也是相應的整數,integer存儲大小為4個字節,而byte為一個字節,存在相應擴展,負數是補碼存儲,所以是前面添1,正數是原碼存儲所以添0,最后轉化為16進制數,前面的0省略,而1不能省略,所以通過&0xff取后八位有效位

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

b已經是8位byte類型,為什么要用0xff來去掉前面的24位呢?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號