一、实现目的:
编写MyOD.java 用java MyOD XXX实现Linux下od -tx -tc XXX的功能
二、功能简介
1.Linux下的od功能是将指定文件内容以八进制、十进制、十六进制、浮点格式或ASCII编码字符方式显示,通常用于显示或查看文件中不能直接显示在终端的字符。od命令系统默认的显示方式是八进制,名称源于Octal Dump。
2.
-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字节。
3.实现目的中的 -tx -tc 是将指定文件以十六进制,和ASCII字符或者反斜杠形式输出。
三、代码:
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
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("C:/javaexp/xx.txt");
String hexData=MyOD.format(bt) ;//将文件中的说由10进制转2进制
System.out.println(hexData);
}
}
四、实验截图
五、码云代码:
https://gitee.com/BESTI-IS-JAVA-2018/20165213zqh/blob/master/20165213exp1/src/MyOD.java