小羊爱主
2015-07-18 15:05
public static void printHexByByteArray(String fileName) throws IOException{
FileInputStream in=new FileInputStream(fileName);
byte[] buf=new byte[8*1024];
//为什么是一个整数来装读到的字节流呢?一个字节8位,一个整数32位,从低位装起的话,最多也只能装4个呀?如果字节数组超过4个,多余的怎么办呢?等到下一次再装么?
int bytes=in.read(buf, 0, buf.length);
int j=1;
for(int i=0;i<bytes;i++){
if(buf[i]<=0xf){
System.out.print("0");
}
System.out.print(Integer.toHexString(buf[i])+" ");
if(j++%10==0){
System.out.println();
}
}
/* 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();
}另外,为何while体中的判断单字节语句,运行下来,双字节也加了“0”?
读到的字节流是byte[] 数组装 , 而不是 int bytes这个整型变量来装,bytes 返回的是读取到的字节个数
文件传输基础——Java IO流
133854 学习 · 1060 问题
相似问题