MyOD

一、实现目的:

编写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

原文地址:https://www.cnblogs.com/xiaozhuzqh/p/9159175.html