課程
/后端開發
/Java
/文件傳輸基礎——Java IO流
老師說每次讀取字節的時候讀取的是低八位的。那如果一個int變量,高八位不全是0,那讀出來的字節數據豈不是就是錯誤的了。
關于這個一直挺困惑,請大神解答。
2016-01-04
源自:文件傳輸基礎——Java IO流 4-2
正在回答
Java 中的一個byte,其范圍是-128~127的,如果不進行&0xff,那么當一個byte會轉換成int時,對于負數,會做位擴展,舉例來說,一個byte的-1(即0xff),會被轉換成int的-1(即0xffffffff ), 那么轉化出的結果就不是我們想要的了。?而0xff默認是整形,所以,一個byte跟0xff相與會先將那個byte轉化成整形運算,結果的高24位就會被清0,這是我們想要的結果。
?看看這篇博客吧,http://makemyownlife.iteye.com/blog/1047717
很好的解答了你的問題。希望能幫到你。
春暖不開花 提問者
Its_forever 回復 春暖不開花 提問者
每次讀低八位,并不代表剩下的不讀啊。
舉報
為您介紹IO流的使用,以及對象的序列化和反序列化的內容
1 回答關于讀取的字節數組問題
3 回答關于讀取字節數組
2 回答關于字節數組讀取文件
2 回答關于讀3個字節存放的到int兩個字節的問題
2 回答關于的字節問題
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2016-01-04
Java 中的一個byte,其范圍是-128~127的,如果不進行&0xff,那么當一個byte會轉換成int時,對于負數,會做位擴展,舉例來說,一個byte的-1(即0xff),會被轉換成int的-1(即0xffffffff ), 那么轉化出的結果就不是我們想要的了。?
而0xff默認是整形,所以,一個byte跟0xff相與會先將那個byte轉化成整形運算,結果的高24位就會被清0,這是我們想要的結果。
?看看這篇博客吧,http://makemyownlife.iteye.com/blog/1047717
很好的解答了你的問題。希望能幫到你。
2016-01-04
每次讀低八位,并不代表剩下的不讀啊。