課程
/后端開發(fā)
/Java
/文件傳輸基礎(chǔ)——Java IO流
如題所示。
2017-03-23
源自:文件傳輸基礎(chǔ)——Java IO流 4-1
正在回答
b這里可以不進(jìn)行&0xff,因?yàn)樵创a里已經(jīng)進(jìn)行了該操作,另外我們讀取的本身就是一個(gè)字節(jié),所以只取低八位不會改變原來的結(jié)果,只是輸出形態(tài)會有區(qū)別。
昵稱是JaVa 提問者
- -終于看懂了。點(diǎn)開源碼看了下,read()單獨(dú)往int里讀的那個(gè),就是我們第一次寫的方法里,輸出的數(shù)已經(jīng)是&0xff 在源碼中進(jìn)行了這個(gè)操作,所以直接就可以轉(zhuǎn)換成16進(jìn)制輸出。還有前面補(bǔ)0的那個(gè)操作,當(dāng)小于或等于15時(shí)前面添加字符0,可以直接進(jìn)行。但是我再read(數(shù)組,起始位,長度)這個(gè)方法時(shí),出現(xiàn)問題,所以自己補(bǔ)了&0xff的操作,結(jié)果就一致了。。。更改了兩個(gè)地方。buf[i]&0xff)<=0xf 還有 ?Integer.toHexString(buf[i]&0xff)+" "
下面是源碼
public?int?read()?throws?IOException?{ ????if?(eof)?{ ????????return?-1; ????} ????temp?=?new?byte[1]; ????int?n?=?read(temp,?0,?1); ????if?(n?<=?0)?{ ????????return?-1; ????} ????return?temp[0]?&?0xff; }
這兒我也覺得應(yīng)該進(jìn)行與操作啊,b是int型,不進(jìn)行與操作輸出就是32位的了。。但是看課程上好像沒有問題。
int類型數(shù)據(jù),4個(gè)字節(jié),如果有符號的整數(shù)且整數(shù)為負(fù)數(shù),那么最高為是為1的,如果只取低八位是不行的,值會改變,如果整數(shù)數(shù)值很小(底八位能夠表示)且高位符號位為0即整數(shù)為正整數(shù),可以這樣操作 ? ? ? 希望有幫助呢~
qq_頓首_0 回復(fù) 昵稱是JaVa 提問者
舉報(bào)
為您介紹IO流的使用,以及對象的序列化和反序列化的內(nèi)容
5 回答為什么while((b=in.read())!=-1)會產(chǎn)生循環(huán)?
2 回答為什么我的Eclipse中 System.out.print(Integer.toHexString(b && 0xff)+" ");會報(bào)錯(cuò)
2 回答int b = in.read(); 與int bytes = in.read(buf,0,buf.length);有什么差
4 回答單字節(jié)讀取時(shí)Integer.toHexString(b) 批量讀取時(shí)Integer.toHexString(buf[i]&0xff)
1 回答read(byte[] b)和read(byte[] b, int off, int len)有什么區(qū)別
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2017-04-16
b這里可以不進(jìn)行&0xff,因?yàn)樵创a里已經(jīng)進(jìn)行了該操作,另外我們讀取的本身就是一個(gè)字節(jié),所以只取低八位不會改變原來的結(jié)果,只是輸出形態(tài)會有區(qū)別。
2017-04-16
- -終于看懂了。點(diǎn)開源碼看了下,read()單獨(dú)往int里讀的那個(gè),就是我們第一次寫的方法里,輸出的數(shù)已經(jīng)是&0xff 在源碼中進(jìn)行了這個(gè)操作,所以直接就可以轉(zhuǎn)換成16進(jìn)制輸出。還有前面補(bǔ)0的那個(gè)操作,當(dāng)小于或等于15時(shí)前面添加字符0,可以直接進(jìn)行。但是我再read(數(shù)組,起始位,長度)這個(gè)方法時(shí),出現(xiàn)問題,所以自己補(bǔ)了&0xff的操作,結(jié)果就一致了。。。更改了兩個(gè)地方。buf[i]&0xff)<=0xf 還有 ?Integer.toHexString(buf[i]&0xff)+" "
下面是源碼
2017-04-16
這兒我也覺得應(yīng)該進(jìn)行與操作啊,b是int型,不進(jìn)行與操作輸出就是32位的了。。但是看課程上好像沒有問題。
2017-03-23
int類型數(shù)據(jù),4個(gè)字節(jié),如果有符號的整數(shù)且整數(shù)為負(fù)數(shù),那么最高為是為1的,如果只取低八位是不行的,值會改變,如果整數(shù)數(shù)值很小(底八位能夠表示)且高位符號位為0即整數(shù)為正整數(shù),可以這樣操作 ? ? ? 希望有幫助呢~