第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

為什么兩次輸出不同?

package?com.imooc;
import?java.io.FileInputStream;
import?java.io.IOException;
public?class?IOUtil?{
?/**
??*?讀取指定文件內(nèi)容,按照十六進(jìn)制輸出到控制臺
??*?每輸出是個byte換行
??*?下面的printHex()方法演示了如何構(gòu)造最簡單的FileInputStream,如何進(jìn)行一個簡單的讀,以及如何讀到文件結(jié)束
??*?@param?fileName
??*?@throws?IOException?
??*/
?public?static?void?printHex(String?fileName)?throws?IOException{
??//1.構(gòu)造FileInputStream的對象,把文件作為字節(jié)流進(jìn)行讀操作
??FileInputStream?in?=?new?FileInputStream(fileName);
??int?b;
??int?i?=?1;
??while((b?=?in.read())!=?-1){
???//如果b小于16進(jìn)制中的一位,就在前面補0
???if(b?<=?0xf){
????System.out.print("0");
???}
???System.out.print(Integer.toHexString(b?&?0xff)?+?"??");//將整型b轉(zhuǎn)換為16進(jìn)制表示的字符串
???if(i++?%?10?==?0){
????System.out.println();
???}
??}
??in.close();
?}
?/**
??*?把一個文件以字節(jié)的方式讀出來,把字節(jié)以十六進(jìn)制的方式打印到控制臺
??*/
?public?static?void?printHexByByteArray(String?fileName)?throws?IOException{
??FileInputStream?in?=?new?FileInputStream(fileName);
??byte[]?buf?=?new?byte[20*1024];//創(chuàng)建一個20K大小的字節(jié)
//??從in中批量讀取字節(jié),把讀到的字節(jié)放到buf這個字節(jié)數(shù)組中,從第0個位置開始放,最多放b.length個字節(jié),返回的是讀到的字節(jié)的個數(shù)
??int?bytes?=?in.read(buf,0,buf.length);//一次性讀完,說明字節(jié)數(shù)組足夠大
//??上述語句注意事項:
//??1.buf可能讀不滿,有可能這個字節(jié)數(shù)組足夠大,并沒有讀滿
//??2.buf可能不夠放,如果打印出來已經(jīng)到字節(jié)數(shù)組里,一次性讀完
//??3.返回的是讀到的字節(jié)的個數(shù),因為最多讀了buf.length個,,所以要返回讀到的字節(jié)的個數(shù)
??int?j?=?1;//用來計數(shù)
??for(int?i?=?0;i?<?bytes;i++){
???if(buf[i]?<=?0xf){
????System.out.print("0");
???}
???System.out.print(Integer.toHexString(buf[i]?&?0xff)?+?"??");//將整型b轉(zhuǎn)換為16進(jìn)制表示的字符串
???if(j++?%?10?==?0){
????System.out.println();
???}
??}
??in.close();
??
//??FileInputStream?in?=?new?FileInputStream(fileName);
//??byte[]?buf?=?new?byte[20*1024];
//??int?bytes?=?0;
//??int?j?=?1;
//??while((bytes?=?in.read(buf,0,buf.length))?!=?-1){
//???for(int?i?=?0;i?<?bytes;i++){
//????if(buf[i]?<=?0xf){
//?????System.out.print("0");
//????}
//????System.out.print(Integer.toHexString(buf[i]?&?0xff)?+?"?");
//????if(j++?%?10?==?0){
//?????System.out.println();
//????}
//???}
//??}
?}
?public?static?void?main(String[]?args)?throws?IOException{
??try?{
???IOUtil.printHex("demo\\Raf.dat");
??}?catch?(Exception?e)?{
???//?TODO?Auto-generated?catch?block
???e.printStackTrace();
??}
??
??System.out.println("\n.......................................\n");
??
??try?{
???IOUtil.printHexByByteArray("demo\\Raf.dat");
??}?catch?(Exception?e)?{
???//?TODO?Auto-generated?catch?block
???e.printStackTrace();
??}
?}?
}

輸出結(jié)果:
41??42??7f??ff??ff??ff??7f??ff??ff??ff??
d6??d0??ad??
.......................................
41??42??7f??0ff??0ff??0ff??7f??0ff??0ff??0ff??
0d6??0d0??0ad?

為什么第一個printHex()和第二個printHexByByteAwway()判斷是否小于等于0xf的結(jié)果不同呢?

正在回答

2 回答

第二個的單位數(shù)補0的if條件有問題:這樣寫試試?

if((buf[i] & 0xff)<=0xf) {

System.out.print("0");

}


1 回復(fù) 有任何疑惑可以回復(fù)我~

一個是byte一個是int

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

蔚然成麟er 提問者

我知道是不同的讀取方式,第一個方法是一個一個讀,第二個方法是全部讀到字節(jié)數(shù)組中,為什么判斷的結(jié)果不一樣,究竟是什么原因?qū)е碌哪??麻煩講具體點,謝謝。
2017-03-17 回復(fù) 有任何疑惑可以回復(fù)我~

舉報

0/150
提交
取消

為什么兩次輸出不同?

我要回答 關(guān)注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號