zoukankan      html  css  js  c++  java
  • 学号20175313 《实现Linux下od -tx -tc XXX的功能》第九周

    一、题目要求

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

    二、题目理解

    • Linux下od -tx -tc XXX1的功能:在命令行输入man od进行查看
    • 英文看不懂的话,这里有中文版

    • 手动在Linux里面对其进行了验证

    • 通过上面准备过程得知Linux下od -tx -tc XXX1的功能为:在以十六进制输出文件内容(默认为四个字节一组)的同时输出字节对应的ASCII值。

    三、需求分析

    • 支持在命令行中输入一个字符串:该字符串代表要进行转化的文件名
    • 每行开头为当前读取到的字符数的7位八进制表示
    • 每行读取16个字符,每个字符转化为两位的十六进制数,每四个字符作为一组输出。每输出一行文件内容的十六进制表示,下一行紧接着输出对应的ASCII字符。
    • 全部文本内容输出结束后,输出“ ”的十六进制表示以及对应的ASCII字符
    • 最后输出当前字符总数

    四、设计思路

    • 问题1:如何实现在命令行中输入参数?

    教材182页Example8_14.java中略微提到一点点。

    • 调用Integer类的public static String toHexString(int i)方法。
    • 问题3:如何判断已经读取结束了?
    • 解决方法:使用随机流中的length方法返回文件长度,当读取长度与文件长度相等时即为读取结束。

    五、代码链接

    六、代码实现过程中遇到的问题

    • 问题1:输出的十六进制数顺序与实际的相反
    • 解决方法:将s1 =s1+java.lang.Integer.toHexString((int) ch[i])改为s1 = java.lang.Integer.toHexString((int) ch[i])+s1,因为该功能的实现实际是将先读入的当做低位的十六进制输出。
    • 问题2:我程序输出的当前字符总数为107,而实际为110。
    • 解决方法:实际上它是把后来输入的“ ”也算进去了。所以我只要在headnumber后面加1就行了。

    七、运行结果截图

    八、参考资料

  • 相关阅读:
    第八次课程作业
    第七次课程作业
    第六次课程作业
    第五次课程作业
    第三次课程作业
    第二次课程作业
    第一次课程作业
    FZU.Software Engineering1816 · First Homework -Preparation
    个人简介
    福大软工1816 · 第二次作业
  • 原文地址:https://www.cnblogs.com/xiannvyeye/p/10772030.html
Copyright © 2011-2022 走看看