為什么會(huì)出現(xiàn)已經(jīng)是兩位字節(jié)了還在前面補(bǔ)零的情況,如:0ce,正常情況應(yīng)該是ce,而我的程序打印出來會(huì)出現(xiàn)0ce的情況。望大神給予指點(diǎn)
public static void printHexByByteArray2(String fileNames) throws IOException{
FileInputStream in = new FileInputStream(fileNames);
byte[] buf = new byte[64];
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();
}
}
}
in.close();
}
這是錯(cuò)誤圖片:
2016-04-09
Bytes是有符號(hào)的整數(shù),數(shù)值范圍是:-127至+127,而你的條件判斷是
if (buf[i] <= 0xf),所有小于F的數(shù),包括負(fù)數(shù)都會(huì)打印0,就出現(xiàn)你的錯(cuò)誤了。更改判斷條件為:
if ((buf[i] <= 0xf) & (buf[i] >= 0)) ,錯(cuò)誤即可糾正?
2016-06-30
估計(jì)你選的文件中含有漢字
2016-04-14
if((buf[i]&0xff)<= 0xf){
?? ??? ??? ??? ??? ?//單位數(shù)前面補(bǔ)0
?? ??? ??? ??? ??? ?System.out.print("0");
?? ??? ??? ??? ?}
這樣也行,用位運(yùn)算排掉符號(hào)位