一、实现目的:
编写MyOD.java 用java MyOD XXX实现Linux下od -tx -tc XXX的功能
二、功能简介
1.Linux下的od功能是将指定文件内容以八进制、十进制、十六进制、浮点格式或ASCII编码字符方式显示,通常用于显示或查看文件中不能直接显示在终端的字符。od命令系统默认的显示方式是八进制,名称源于Octal Dump。
-t、--format=TYPE:指定输出格式,格式包括a、c、d、f、o、u和x,各含义如下:
- a:具名字符;
- c:ASCII字符或者反斜杠;
- d[SIZE]:十进制,正负数都包含,SIZE字节组成一个十进制整数;
- f[SIZE]:浮点,SIZE字节组成一个浮点数;
- o[SIZE]:八进制,SIZE字节组成一个八进制数;
- u[SIZE]:无符号十进制,只包含正数,SIZE字节组成一个无符号十进制整数;
- x[SIZE]:十六进制,SIZE字节为单位以十六进制输出,即输出时一列包含SIZE字节。
2.实现目的中的 -tx -tc 是将指定文件以十六进制,和ASCII字符或者反斜杠形式输出。
三、代码
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
/**
* @author lihaoran
*/
@SuppressWarnings("ALL")
public class MyOD {
public static String format(byte []bt){
int line=0 ;
StringBuilder buf=new StringBuilder() ;
for(byte d:bt){
if(line%16==0) {
buf.append(String.format("%05x: ", line)) ;
}
buf.append(String.format("%02x ", d)) ;
line++ ;
if(line%16==0) {
buf.append("
");
}
}
buf.append("
") ;
return buf.toString();
}
public static byte[] readFile(String file) throws IOException{
InputStream is=new FileInputStream(file) ;
int length=is.available() ;
byte[] bt = new byte[length];
is.read(bt) ;
return bt;
}
public static void main(String[]agrs) throws IOException{
byte []bt=MyOD.readFile("D:/Java/OD.txt");
String hexData=MyOD.format(bt) ;
System.out.println(hexData);
}
}
四、实验截图
五、码云代码
https://gitee.com/lhr0321/20175318_JAVA/blob/master/javaExperiment2/src/MyOD.java