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就行了。
七、运行结果截图
八、参考资料
- 《Java2实用教程(第五版)》
- arges[]数组的使用
- JDKTM 6 Documentation
学号20175313 《实现Linux下od -tx -tc XXX的功能》第九周的更多相关文章
-
实现Linux下od -tx -tc XXX的功能
实现Linux下od -tx -tc XXX的功能 一.od命令 (1)功能 od命令用于将指定文件内容以八进制.十进制.十六进制.浮点格式或ASCII编码字符方式显示,通常用于显示或查看文件中不能直 ...
-
(转)linux下od命令的使用
linux下od命令的使用 原文:http://blog.csdn.net/shylock_backer/article/details/46473283 名称:od作用:格式化输出文件中的数据提要: ...
-
Linux下vi编辑器粘贴复制剪切功能
RedHat 9.0 Linux下vi编辑器实现简单的粘贴复制剪切功能": 如果想把文件内的第三行内容黏贴到第十五行: 1.进入你的文件,(处于命令模式,而不是编辑模式) 2.将你的光标移到 ...
-
在linux下实现UBOOT的TFTP下载功能
一.环境 1.条件 软件:虚拟机下linux(本文涉及到的是Ubuntu12.0.4). linux下的串口助手(例如minicom)或windows下的串口助手(例如超级终端.SecureCRT) ...
-
Python基础-面向过程编程实现Linux下cat -rl ‘dir’ |grep ‘keywords’ 功能
函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计的基本单元. ...
-
Linux下MySQL报Table 'xxx' doesn't exist错误解决方法,表名存在大小写区分
Linux服务器上在线装了个MySQL,但是部署web应用时一直报后台一直报错:Table 'xxx' doesn't exist. 本地测试一直都是正常的,同样的代码,同样的数据库,表是存在的,但是 ...
-
【转】Linux下cp: omitting directory `XXX'问题解决
在linux系统中复制文件夹时提示如下: Shell代码 [root@idtp4 site-packages]# /site-packages/ cp: omitting directory ‘yag ...
-
linux下为用户添加sudo命令功能
为用户添加sudo命令功能: 打开etc下的sudoers文件 vi /etc/sudoers 在 root ALL=(ALL) ALL 下面添加如下一行,然后保存关闭 hadoop ALL= ...
-
linux下的Source命令的基本功能
source命令用法:source FileName作用:在当前bash环境下读取并执行FileName中的命令.注:该命令通常用命令“.”来替代.如:source .bash_rc 与 . .bas ...
随机推荐
-
x01.os.7: *一样的等
*一样的等 昨日出差,办完事后,下午 2:30,准备进长途汽车站买票回家,被一人拦住,说可以带我进去,车马上就要开了,买票来不及.我以为是汽车司机,就跟了进去.进去后,他打了个电话,说 3:30 车 ...
-
ABAP 内表的行列转换-发货通知单2
*&---------------------------------------------------------------------* *& Report Z_TEST_C ...
-
IOS下arm64汇编疑问
之前所有关于32位下的纯汇编.s代码,在编译arm64的时候,很多错误,不得已只能用C代码. 但是arm_neon.h内部类C接口的汇编,基本上没有问题.不敢完全保证,还有待确认.关于arm64位的汇 ...
-
App被拒绝的原因收录
转自:dApps开发者 » APP被苹果App Store拒绝的79个原因(未完待续) 1.程序有重大bug,程序不能启动,或者中途退出.2.绕过苹果的付费渠道,我们之前游戏里的用兑换码兑换金币.3. ...
-
gethostbyname() -- 用域名或主机名获取IP地址
#include <netdb.h> #include <sys/socket.h> struct hostent *gethostbyname(const char * ...
-
Win8下在Vmware11中安装使用苹果系统OS X 10.10
原文:Win8下在Vmware11中安装使用苹果系统OS X 10.10 近来因为需要做 iOS 的项目,所以需要多花一些时间看看敲敲代码.因为自己手头上并没有 Mac(过年为了闲的时候能玩玩游戏 ...
-
[转]http://www.russbishop.net/xcode-exception-breakpoints
原文:http://www.russbishop.net/xcode-exception-breakpoints Many people are not aware of Xcode's powerf ...
-
Error getting nested result map values for &#39;company&#39;. Cause: java.sql.SQLException: Invalid value for getInt() - &#39;NFHK188&#39;
我今天遇到一个我不解的问题,是mybatis多对一关系查询出问题了,但是我自己还是解决了,在网上也查过那个错误,可是找不到我想要的.不知道你们遇到过没有,我接下来分享给大家.希望我这个第一篇博客能帮助 ...
-
Postman:传递的参数是List类型时 传参格式的写法
Postman传递的参数是List类型 实体类中引用了一个List,泛型为其他实体类 参数是List集合时,Postman中参数格式如下图所示: 有不明白的地方,欢迎留言
-
hibernate设置二级缓存时报错java.lang.NoClassDefFoundError: org/hibernate/engine/jndi/JndiNameException
错误提示大概意思是,没有类定义错误,就是找不到要使用的hibernate二级缓存管理引擎类.我在这用的是ehcache二级轻量级缓存,报错原因可能是导入的jar包版本和使用的hibernate框架核心 ...