MyOD的代码实现

一、题目要求:

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

二、设计思路

OD命令详解:

因此,该题目所要实现的功能为以十六进制输出文本内容,同时输出对应的ASCII码值。

三、程序代码

import java.io.*;
public class MyOD{
public static void main(String[] args){
String filename=args[0];
File file= new File(filename);
try {
FileInputStream input = new FileInputStream(file);
byte[] data = new byte[1024];
int i, flag;
input.read(data);
for (i = 0; i < 1024; i = i + 4) {
if (i % 16 == 0) {
System.out.printf("\n%07o\t\t", i );
}
System.out.printf(" %02x%02x%02x%02x\t", data[i + 3], data[i + 2], data[i + 1], data[i]);
if ((i + 4) % 16 == 0) {
System.out.println();
System.out.printf("\t ");
for (int j = i - 12; j < i+4 ; j++) {
if ((int) data[j] == 10) {
System.out.print("\\n");
} else {
System.out.printf(" %c ", data[j]);
}
}
}
if (data[i+4] ==0 ) {
System.out.println();
System.out.printf("\t ");
for (int j = i-i%16; data[j-3] != 0; j++) {
if ((int) data[j] == 10) {
System.out.printf("\\n");
} else {
System.out.printf(" %c ", data[j]);
}
}
break;
}
}
System.out.printf("\n%07o\n", i+3 );
}
catch (IOException e){
System.out.println("Error:"+e);
}
}
}

程序要点分析

  • printf("%02x",data[i])是一个类似C语言的表达方式。%02x代表输出该数字的十六进制,不满两位的第一位补0;
  • 输出结果中每四个字符对应的十六进制串是次序反过来的,例如单词This,T(54),h(68),i(69),s(73)。输出时则会输出73696854。
  • 四个字节为一组,判断开头通过i对16取余判断是否为0实现。

运行截图

总结

必须诚实地讲,这次的代码并非我独立编写。由于抽时间跑了一个密码学计算方法的超长待机的程序,我给自己留下做这个任务的时间并不很多。况且使用mac系统并没有安装linux虚拟机,也没有办法实地操作使用od命令,只能尽可能的查找资料艰涩的理解。此次程序我更多的参考了往届学长学姐的博客。娄老师说如果代码不是自己写的理解透了也是好的。在对学长学姐代码的研究中,我运用了一些小窍门。对代码进行一块一块的分块,如循环体等可以做为小块来独立出去,将这部分代码删去,看看运行结果少了或者偏了哪些,那这部分代码就是用来干什么的,带着这段代码实现的目的去分析,就可以很轻松的理解代码含义。理解了之后发现这个任务并不算难,实现这个功能尚且有其他方法,如果时间足够还可以抽时间重写一次。

MyOD 代码实现的更多相关文章

  1. 20155308&20155316 2017-2018-1 《信息安全系统设计基础》实验一

    20155308&20155316 2017-2018-1 <信息安全系统设计基础>实验一 此次实验我和黄月同学一起做了1.2.3.5项,第4项在实验课上做完了,但是没有按时提交. ...

  2. 20155310 2016-2017-2《Java程序设计》课堂实践补交

    20155310 2016-2017-2<Java程序设计>课堂实践补交 第九周 程序设计中临时变量的使用 public class linshibianliang { public st ...

  3. MyOD C语言代码实现

    Myod C语言实现 一.题目要求 1 复习c文件处理内容 2 编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能 main与其他分开,制作静态库和动态库 编写Ma ...

  4. 实验MyOD

    实验MyOD 编写MyOD.java 用java MyOD XXX实现Linux下od -tx -tc XXX的功能 提交测试代码和运行结果截图,加上学号水印,提交码云代码链接. 代码如下: (刚开始 ...

  5. 20155215 第二周测试1 与 myod

    课堂测试 第一题 每个.c一个文件,每个 .h一个文件,文件名中最好有自己的学号 用Vi输入图中代码,并用gcc编译通过 在Vi中使用K查找printf的帮助文档 提交vi编辑过程截图,要全屏,包含自 ...

  6. 20155306 2017-2018-1《信息安全系统设计》第二周课堂测试以及myod的实现

    20155306 2017-2018-1<信息安全系统设计>第二周课堂测试以及myod的实现 第二周课堂测验: (注:前两项在课堂已提交,在此不做详解) 第一项: 每个.c一个文件,每个. ...

  7. 关于5303狄惟佳同学的myod程序设计的补充实现

    关于5303狄惟佳同学的myod程序设计的补充实现 原版代码实现的局限 原版代码主函数 int main(int argc,char *argv[]) { if(strcmp(argv[1], &qu ...

  8. MyOD(课下作业,选做)

    MyOD(课下作业,选做) 代码要求 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2.b ...

  9. 20175208 张家华 MyOD

    一.实现目的: 编写MyOD.java 用java MyOD XXX实现Linux下od -tx -tc XXX的功能 二.功能简介 1.Linux下的od功能是将指定文件内容以八进制.十进制.十六进 ...

随机推荐

  1. BZOJ 2463: [中山市选2009]谁能赢呢?(智商)

    Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 3110  Solved: 2250[Submit][Status][Discuss] Descript ...

  2. 【读书笔记】iOS-更改编辑器键的绑定

    一,Xcode-->Preferences--->Key Bindings. 参考资料:<Xcode实战开发>

  3. SAP MM 物料主数据MRP2 视图Rounding Value字段

    SAP MM 物料主数据MRP2 视图Rounding Value字段 如下物料号,MRP2视图中,维护了rounding value字段值为50. MRP type :PD Lot size:EX ...

  4. iphone怎么投屏到电脑屏幕上

    随着苹果手机的更显换代,苹果手机的功能越来越强大,其中iphone手机更新了airplay镜像功能,所以想要手机投屏电脑的小伙伴就更加方便了,但是iphone怎么投屏到电脑呢?大家不用着急,下面即将为 ...

  5. AndroidStudio安装、配置、测试

    AndroidStudio安装.配置.测试(win7_64bit) 目录 1.概述 2.本文用到的工具 3.安装测试 4.模拟器安装.使用 5.常用配置 6.注事事项 7.相关博文 >>看 ...

  6. robot framework笔记(一):环境配置(基于python3)+在pycharm中编写及运行robot脚本

    (一)使用pip安装robotframework框架和seleniumlibrary库 pip install --upgrade robotframework pip install --upgra ...

  7. ERP项目应该由谁来主导?

    前段时间在朋友圈看到了别人分享的公众号,主要是谈ERP项目应该由谁来主导的问题.文章的观点认为应该由哪个部门主导ERP的判断标准如下: 1.应该由一个期望上进的部门主导ERP项目: 2.应该由一个有话 ...

  8. Python 常用的正则表达式

    校验数字的相关表达式: 功能 表达式 数字 ^[0-9]*$ n位的数字 ^\d{n}$ 至少n位的数字 ^\d{n,}$ m-n位的数字 ^\d{m,n}$ 零和非零开头的数字 ^(0|[1-9][ ...

  9. 后台调用前端JS

    ClientScript.RegisterStartupScript(ClientScript.GetType(), "myscript", "<script> ...

  10. tesseract-ocr安装问题

    今天安装tesseract-ocr的时候,载了坑,记录一下. 1. 安装时语言库的选择,我把 aditional language data 这一项全选中了,装的时候那叫一个慢啊,差不多3个小时装好的 ...