实现Linux下od -tx -tc XXX的功能
一、od命令
(1)功能
od命令用于将指定文件内容以八进制、十进制、十六进制、浮点格式或ASCII编码字符方式显示,通常用于显示或查看文件中不能直接显示在终端的字符。
常见的文件为文本文件和二进制文件。od命令主要用来查看保存在二进制文件中的值,按照指定格式解释文件中的数据并输出。
(2)命令格式
od [<选项><参数>] [<文件名>]
(3)命令选项
-t<TYPE>
:指定输出格式,格式包括a、c、d、f、o、u和x,各含义如下:
- a:具名字符;
- c:ASCII字符或者反斜杠;
- d[SIZE]:十进制,正负数都包含,SIZE字节组成一个十进制整数;
- f[SIZE]:浮点,SIZE字节组成一个浮点数;
- o[SIZE]:八进制,SIZE字节组成一个八进制数;
- u[SIZE]:无符号十进制,只包含正数,SIZE字节组成一个无符号十进制整数;
- x[SIZE]:十六进制,SIZE字节为单位以十六进制输出,即输出时一列包含SIZE字节。在默认条件下,以四个字节为一组输出
二、题目分析
od -tx File
是以十六进制输出File的内容,默认以四字节为一组显示。
od -tc File
输出字节对应的ASCII值
题目中od -tx -tc File
是先在以十六进制输出File文件内容的同时,输出字节对应的ASCII值,它与od -tc -tx File
的区别在于输出的次序
三、MyOD.java
import java.io.*;
public class MyOD{
public static void main(String[] args) throws IOException {
try (FileInputStream input = new FileInputStream("/home/darkeye/cxgg20165312/20165312/hello")) {
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 );
} //四个字节为一组,一行四组。i=16时为左侧第一列(默认的地址),格式为七位八进制。
// 通过找规律,其数值是该行第一个字符的序号值(从0到length-1)对应的的八进制数
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.printf(" \\");
System.out.printf("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(" \\");
System.out.printf("n ");
} else {
System.out.printf(" %c ", data[j]);
}
}
break;
}
}
System.out.printf("\n%07o\n", i+3 );
}
}
}
实现Linux下od -tx -tc XXX的功能的更多相关文章
-
学号20175313 《实现Linux下od -tx -tc XXX的功能》第九周
目录 MyOD 一.题目要求 二.题目理解 三.需求分析 四.设计思路 五.代码链接 六.代码实现过程中遇到的问题 七.运行结果截图 八.参考资料 MyOD 一.题目要求 编写MyOD.java 用j ...
-
(转)linux下od命令的使用
linux下od命令的使用 原文:http://blog.csdn.net/shylock_backer/article/details/46473283 名称:od作用:格式化输出文件中的数据提要: ...
-
Linux下MySQL报Table &#39;xxx&#39; doesn&#39;t exist错误解决方法,表名存在大小写区分
Linux服务器上在线装了个MySQL,但是部署web应用时一直报后台一直报错:Table 'xxx' doesn't exist. 本地测试一直都是正常的,同样的代码,同样的数据库,表是存在的,但是 ...
-
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下cp: omitting directory `XXX&#39;问题解决
在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 ...
随机推荐
-
prototype,__proto__,constructor
proto属性: 所有对象都有此属性.但它不是规范里定义的属性,并不是所有JavaScript运行环境都支持.它指向对象的原型,也就是你说的继承链里的原型.通过Object.getPrototypeO ...
-
非阻塞socket学习,select基本用法
server #include <stdio.h> #include <winsock2.h> #include <iostream> #pragma commen ...
-
Xcode的一些有用的插件
** --Alcatraz:Xcode插件管理 ** 安装:curl -fsSL https://raw.github.com/supermarin/Alcatraz/master/Scripts/ ...
-
android studio 自用快捷键方案
自用改建方案,一切为了更加顺手 以windows平台为例,为了清晰明了,字母键盘都以大写注明 代码篇 格式化代码 ctl+alt+L 快速修复 alt ...
-
hdwiki 数据库结构说明
HDWiki数据库结构说明 以下标有“A”的表示该列为自增列,标有“P”的表示该列为主码,标有“I”的表示该列为索引列,标有“U”的表示该列为唯一列,标有“F”的表示全文搜索. ...
-
Less 官方文档学习笔记
LESS 是css的一种扩展,它的编辑器是基于node.js 的less.js,将less文件编译成css文件(可压缩). 其中的概念: 变量:定义变量来代替某个值,只能编译一次,本质是“常量”.例如 ...
-
HDU 4735 Little Wish~ lyrical step~(DLX , 反复覆盖)
解题思路: DLX 的模板题.反复覆盖. #include <stdio.h> #include <string.h> #include <iostream> #i ...
-
spring aop使用
最近做一个数据库分离的功能,其中用到了spring aop,主要思路就是在service层的方法执行前根据注解(当然也可以根据方法名称,如果方法名称写的比较统一的话)来判断具体使用哪个库.所以想着再回 ...
-
1. Java Static和Final使用总结
static:用于属性和方法 static修饰属性:无论一个类生成多少对象,所有这些对象共用唯一一个静态成员变量.一个对象对该静态变量进行修改,其他对象对该静态变量的值也随之发生变化.可以通过类名.成 ...
-
Eclipse 在启动发生错误异常:An internal error occurred during: ";Initializing Java Tooling";. java.lang.NullPointerException的解决办法
异常现象: 打开Eclipse,出现 An internal error occurred during: "Initializing Java Tooling". java.la ...