20155323课堂实践20170531
20155323课堂实践20170531
编写MyOD.java 用java MyOD XXX实现Linux下od -tx -tc XXX的功能
提交测试代码和运行结果截图,加上学号水印,提交码云代码链接。
实验代码:
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
public class MyOD {
public static String format(byte[] by) {
int line=0;
StringBuilder buf=new StringBuilder();
for(byte b:by){
if(line%16 == 0){
buf.append(String.format("%05x: ",line));
}
buf.append(String.format("%02x ",b));
line++;
if(line%16 == 0){
buf.append("\n");
}
}
buf.append("\n");
return buf.toString();
}
public static byte[] readFile(String file)throws IOException{
InputStream in=new FileInputStream(file);
int length=in.available();
byte by[]=new byte[length];
in.read(by);
return by;
}
public static void main(String[] args) throws IOException{
byte[] by=MyOD.readFile("C:\\Users\\weiliang\\abc.txt");
String hexData=MyOD.format(by);
System.out.println(hexData);
}
}
运行截图:
遇到的问题
- 不清楚Linux下
od -tx -tc XXX
命令。百度后我知道了od命令用于将指定文件内容以八进制、十进制、十六进制、浮点格式或ASCII编码字符方式显示,通常用于显示或查看文件中不能直接显示在终端的字符。od命令系统默认的显示方式是八进制,名称源于Octal Dump。例如od -tx testfile
是以十六进制输出,默认以四字节为一组(一列)显示。od -tx1 testfile
是以十六进制输出,每列输出一字节。od -tc test
是用字符来显示文件test。
- 首先要先定义一个主类,然后定义一个字符流,使其以十六进制输出,每逢两位数字输出一次,不足前面补0,每输出16次换行。然后构造一个
readFile()
方法,并且定义该方法是从文件中读取字符。最后定义读取路径,设置好读取的文件,最后用主类输出。
码云链接