学号20175313 《实现Linux下od -tx -tc XXX的功能》第九周

MyOD

一、题目要求

编写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值。
  • 全部文本内容输出结束后,输出“\n”
  • 最后输出当前字符总数

四、设计思路

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

教材182页Example8_14.java中略微提到一点点。
输入图片说明

  • 解决方法:arges[]数组的使用
  • 问题2:如何将每个字符转化为两位的十六进制数?

    输入图片说明

  • 调用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。

    输入图片说明

  • 解决方法:实际上它是把后来输入的“\n”也算进去了。所以我只要在headnumber后面加1就行了。

    输入图片说明

七、运行结果截图

输入图片说明
输入图片说明

八、参考资料

猜你喜欢

转载自www.cnblogs.com/xiannvyeye/p/10772030.html
tc