/**
* @Author: www.itze.cn
* @Date: 2020/9/24 10:29
* @Email: 814565718@qq.com
*/
/**
* 读取一个文件,然后每10个字节换行
*
* @param fileName
*/
public static void printHex(String fileName) {
int b;
int a = 1;
try {
//把文件作为字节流操作
FileInputStream fis = new FileInputStream(fileName);
while ((b = fis.read()) != -1) { //每次只读一个字节
//以16进制
System.out.print(Integer.toHexString(b) + " ");
if (a++ % 10 == 0) { //每10个字节换行
System.out.println();
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

/**
* 将一个文件读到byte数组中
*
* @param fileName
*/
public static void printHexByByteArrays(String fileName) {
try {
//把文件作为字节流操作
FileInputStream fis = new FileInputStream(fileName);
byte[] bytes = new byte[10 * 1024]; //1024个字节=1KB 10*1024=10KB
int i = 1;
//把文件读到byte数组中,并且放入从0-bytes.length的位置,返回值read为读到的字节个数
int read = fis.read(bytes, 0, bytes.length);
for (int j = 0; j < read; j++) { //这里只遍历读到个字节个数
System.out.print(Integer.toHexString(bytes[j]) + " ");
if (i++ % 10 == 0) { //每10个字节换行
System.out.println();
}
}
//当数组不够大的时候一次性无法读完,使用循环去读
int readBteys;
while ((readBteys = fis.read(bytes, 0, bytes.length)) != -1) {
for (int j = 0; j < readBteys; j++) {
System.out.print(Integer.toHexString(bytes[j]) + " ");
if (i++ % 10 == 0) { //每10个字节换行
System.out.println();
}
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}