• 20155227第十五周课堂实践


    20155227第十五周课堂实践

    提交之后发现交的截图是之前abc.txt文件为空时的截图。

    编写MyOD.java 用java MyOD XXX实现Linux下od -tx -tc XXX的功能

    关于od命令

    功能:输出文件内容。
    用户通常使用od命令查看特殊格式的文件内容。通过指定该命令的不同选项可以以十进制、八进制、十六进制和ASCII码来显示文件。
    
    语  法:od [-abcdfhilovx][-A <字码基数>][-j <字符数目>][-N <字符数目>][-s <字符串字符数>][-t <输出格式>][-w <每列字符数>][--help][--version][文件...]
    
    说明:od命令系统默认的显示方式是八进制,这也是该命令的名称由来(Octal
    Dump)。
    但这不是最有用的显示方式,用ASCII码和十六进制组合的方式能提供更有价值的信息输出。
    

    常用参数:

       -a  此参数的效果和同时指定"-ta"参数相同。
      -A<字码基数>  选择要以何种基数计算字码。
      -b  此参数的效果和同时指定"-toC"参数相同。
      -c  此参数的效果和同时指定"-tC"参数相同。
      -d  此参数的效果和同时指定"-tu2"参数相同。
      -f  此参数的效果和同时指定"-tfF"参数相同。
      -h  此参数的效果和同时指定"-tx2"参数相同。
      -i  此参数的效果和同时指定"-td2"参数相同。
      -j<字符数目>或--skip-bytes=<字符数目>  略过设置的字符数目。
      -l  此参数的效果和同时指定"-td4"参数相同。
      -N<字符数目>或--read-bytes=<字符数目>  到设置的字符数目为止。
      -o  此参数的效果和同时指定"-to2"参数相同。
      -s<字符串字符数>或--strings=<字符串字符数>  只显示符合指定的字符数目的字符串。
      -t<输出格式>或--format=<输出格式>  设置输出格式。
      -v或--output-duplicates  输出时不省略重复的数据。
      -w<每列字符数>或--width=<每列字符数>  设置每列的最大字符数。
      -x  此参数的效果和同时指定"-h"参数相同。
      --help  在线帮助。
      --version  显示版本信息。
    

    代码

    代码如下:

    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:\Workspace\guyanlin20155227\src\2015527\exam2017531\abc.txt");
    
            String hexData=MyOD.format(bt) ;
    
            System.out.println(hexData);
    
        }
    
    }
    

    运行结果截图

  • 相关阅读:
    如何列出陣列中大於n的所有元素? (C/C++) (STL)
    為什麼int *ptr = 345;這樣的寫法有問題?
    如何使用STL寫XML轉檔程式? (C/C++) (STL) (Web) (XML)
    如何判斷回文(palindrome) ? (C/C++) (C) (STL)
    如何將int轉string? (C/C++) (C)
    如何將輸入的字串存到記憶體後,再一起印出來? (C/C++) (C)
    如何為程式碼加上行號? (C/C++) (STL)
    如何将字符串前后的空白去除(C/C++) (STL)
    簡單的Linked List實現
    如何將struct塞進vector? (C/C++) (STL)
  • 原文地址:https://www.cnblogs.com/guyanlin/p/6922798.html
Copyright © 2020-2023  润新知