编程实现Linux系统的od功能

选作题目以及分析

  • 题目:编写MyOD.java 用java MyOD XXX实现Linux下od -tx -tc XXX的功能
  • 分析:我以为这道题目中的参数应当是-tx1而不是-tx,使用了-tx后结果以下:

而使用-tx1后的结果以下:
java

自学od功能

  • 语法
    od [option] file(s)编程

  • 经常使用参数以及功能
    指定参数:
    -A :指定地址基数,包括:.net

    d 十进制
    
      o 八进制(系统默认值)
    
      x 十六进制
    
      n 不打印位移值

    -t :指定数据的显示格式,主要的参数有:命令行

    c ASCII字符或反斜杠序列
    
      d 有符号十进制数
    
      f  浮点数
    
      o 八进制(系统默认值为02)
    
      u 无符号十进制数
    
      x 十六进制数

    程序设计

  • 根据截图再次分析:由开始的截图咱们能够知道,每行只输出16个字符,在这16个字符的下方打印相应的ASCII码,每行的开头对应该行字符个数的8位8进制数。另外,观察到所有输出完毕后老是会输出一个'\n'。
  • 根据这些分析咱们就能知道,这其实不是一个很难的程序,伪代码:
读取命令行输入的参数(文件名)
    以16为每一个字符串的长度读取文件中的内容,获得字符串s1
    每读取一个,进行下列操做直到文件中的消息所有读完:
    {
        设定新的字符串s2=s1
        先输出每行开头printf("%07o",截止到上一行,字符的个数)
        按必定间隔输出s1
        换行
        按必定间隔输出s2中每一个字符的ASCII码
    }
    最后一行输出字符的总个数printf("%07o",字符的总个数)

编程实现

  • 关键代码注释(见图片)

    设计

  • 将一段歌词写在a.text文档中:
    code

  • 运行代码,获得以下结果:
    blog

  • 成功运行出Linux系统下的od命令图片

编程中遇到的问题和解决

  • 问题一:一开始并无注意到输出所有字符后须要输出一个“\n”符号,到最后才想起来,可是要改代码又要所有都改很麻烦
  • 问题一解决:翻找课本后发现随机流是能够调用lenth()方法来直接得到一个文件里面的字符个数的,因此“投机取巧”,在开头建了个随机流来得到文件中的字符个数,最后和已经输出的字符个数作比较,相等时打印“\n”以及对应的两位16进制ASCII码。

参考资料

心得体会

这个选作难度比较小,可是若是要对od命令的其余功能进行扩充的话感受仍是有点麻烦的。实现方法应该是:须要针对命令行输入的参数不一样使用多个if-else语句。文档

相关文章
相关标签/搜索