2017-2018-1 20155305 《信息安全系统设计基础》第四周学习总结(课堂提交作业未来得及提交码云链接myod补充博客)

课堂提交题目要求

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

代码码云链接补交

  • 源代码main函数
#include <stdio.h>

#include <stdlib.h>

#include <sys/types.h>

#include <sys/stat.h>

#include <fcntl.h>

#include <unistd.h>

#include"head.h"

int main(int argc,char *argv[])
{ int i;
int n1=0,n2=0,n3=0,n4=0;
for(i=1;i<argc-1;i++)
{
switch(argv[i][2])
{
case 'c':n1=1;break;
case 'x':n2=1;break;
case 'd':n3=1;break;
case 'o':n4=1;break;
}
}
int fd=10;
fd=open(argv[argc-1],O_RDONLY,0);
//printf("%d",fd); if(fd==-1){printf("Error!\n");exit(1);} myod(fd,n1,n2,n3,n4);
close(fd);
return 0;
}
  • 源代码myod.c
#include<stdio.h>
#include<unistd.h>
void myod(int fd,int n1,int n2,int n3,int n4)
{
char ch,line[16];
int i;
int a=0;
int j=0;
while(read(fd,&ch,1)!=0){
line[j%16]=ch;
if((j+1)%16==0){
printf("%07o ",16*a);
a++;
if(n1){for(i=0;i<16;i++)
{
if(line[i]=='\n')
{printf("%5s","\\n");continue;}
if(line[i]=='\t')
{printf("%5s","\\t");continue;}
putchar(line[i]);
putchar(' ');
putchar(' ');
putchar(' ');
putchar(' ');
}
putchar('\n');}
if(n2){printf(" ");for(i=0;i<16;i++)
{ if(line[i]=='\n')
{printf("0%-4x",'\n');continue;}
if(line[i]=='\t')
{printf("0%-4x",'\t');continue;}
printf("%-5x",line[i]);
}
putchar('\n');
} if(n3){printf(" ");for(i=0;i<16;i++)
{ if(line[i]=='\n')
{printf("%-5d",'\n');continue;}
if(line[i]=='\t')
{printf("%-5d",'\t');continue;}
printf("%-5d",line[i]);
}
putchar('\n');
}
if(n4){printf(" ");for(i=0;i<16;i++)
{
if(line[i]=='\n')
{printf("%-5o",'\n');continue;}
if(line[i]=='\t')
{printf("%-5o",'\t');continue;}
printf("%-5o",line[i]);
}
putchar('\n');
}
}
j++; }
}

课堂题目理解

  • od的功能(参考Linux od命令详细介绍及用法实例):

    od命令用于将指定文件内容以八进制、十进制、十六进制、浮点格式或ASCII编码字符方式显示,通常用于显示或查看文件中不能直接显示在终端的字符。

    选项-t:指定输出格式,格式包括a、c、d、f、o、u和x。

  • od -tx XXX是以十六进制输出XXX的内容,默认以四字节为一组显示。(XXX中字符对应的ascii值的十六进制表示,且每四字节显示的顺序是字符从后向前的顺序)截图如下:

  • od -tx -tc XXX就是在十六进制输出其ascii值的同时,显示对应的文件内容,-tx和-tc的前后顺序决定了文本内容和十六进制ascii值的上下顺序。截图如下:

  • od -tc -tx1 XXX是每列输出一个字节,打印文件内容和对应的十六进制ascii值(题目要求理解后编写MyOD实现此功能)。截图及和上面功能对比如下:

题目截图

2017-2018-1 20155305 《信息安全系统设计基础》第四周学习总结(课堂提交作业未来得及提交码云链接myod补充博客)的更多相关文章

  1. 20135328信息安全系统设计基础第一周学习总结(Linux应用)

    学习计时:共xxx小时 读书: 代码: 作业: 博客: 一.学习目标 1. 能够独立安装Linux操作系统   2. 能够熟练使用Linux系统的基本命令   3. 熟练使用Linux中用户管理命令/ ...

  2. 20135328信息安全系统设计基础第二周学习总结(vim、gcc、gdb)

    第三周学习笔记 学习计时:共8小时 读书:1 代码:5 作业:1 博客:7 一.学习目标 熟悉Linux系统下的开发环境 熟悉vi的基本操作 熟悉gcc编译器的基本原理 熟练使用gcc编译器的常用选项 ...

  3. 2017-2018-1 20155232 《信息安全系统设计基础》第十周课堂测试(ch06)补交

    # 2017-2018-1 20155232 <信息安全系统设计基础>第十周课堂测试(ch06)补交 上课时完成测试后在提交的时候,没有提交成功,进行补交. 1.下面代码中,对数组x填充后 ...

  4. 2017-2018-1 20155330 《信息安全系统设计基础》第10周课堂测试&课下作业

    2017-2018-1 20155330 <信息安全系统设计基础>第10周课堂测试&课下作业 stat命令的实现-mysate 学习使用stat(1),并用C语言实现 提交学习st ...

  5. 2017-2018-1 20155318 《信息安全系统设计基础》第2周课堂实践、makefile、以及myod

    2017-2018-1 20155318 <信息安全系统设计基础>第2周课堂实践.makefile.以及myod 测试3-gdb测试 用gcc -g编译vi输入的代码 在main函数中设置 ...

  6. LINUX信息安全系统设计基础第一周学习总结

     Linux系统简介 一.实验内容 了解 Linux 的历史,Linux 与 Windows 的区别等入门知识. 二.实验要求 阅读linux简介与历史 三.实验步骤 二.Linux 与 Window ...

  7. LINUX信息安全系统设计基础第二周学习总结

    1 Linux命令 2 man命令 1.Terminal(终端) Linux 系统还提供了一个叫做终端模拟器的程序(Terminal),下面几个比较常见的终端模拟器,例如 gnome-terminal ...

  8. 2019-2020-1 20175223 《信息安全系统设计基础》MyOD

    目录 一.要求 二.设计流程 1. 需求分析 2. 概要设计 伪代码 3. 详细设计 main.c tans_0x.c tans_pr.c tansp.h 三.编写Makefile,并制作动.静态库 ...

  9. 20155305《信息安全系统设计基础》10月18日课堂 fork,exic,wait

    20155305<信息安全系统设计基础>10月18日课堂 fork,exic,wait fork()函数 1.fork函数作用 一般来讲, 我们编写1个普通的c程序, 运行这个程序直到程序 ...

随机推荐

  1. PyQt4(简单信号槽)

    import sys from PyQt4 import QtCore, QtGui class myWidget(QtGui.QWidget): def __init__(self): super( ...

  2. 【Java】操作Sqlite数据库

    首先在https://github.com/xerial/sqlite-jdbc下载jar包 import java.sql.Connection; import java.sql.DriverMan ...

  3. Mysql中的delimiter详解

    初学mysql时,可能不太明白delimiter的真正用途,delimiter在mysql很多地方出现,比如存储过程.触发器.函数等. 学过oracle的人,再来学mysql就会感到很奇怪,百思不得其 ...

  4. 数据可视化d3.v4.js

    <html> <head> <meta charset="utf-8"> <title>做一个简单的条形图</title> ...

  5. leetCode题解之反转字符串中的元音字母

    1.问题描述 Reverse Vowels of a String Write a function that takes a string as input and reverse only the ...

  6. 在 Azure VM 上安装 LAMP Web 服务器

    本文逐步讲解如何在 Azure 中的 Ubuntu VM 上部署 Apache Web 服务器.MySQL 和 PHP(LAMP 堆栈). 如果想要部署 NGINX Web 服务器,请参阅 LEMP ...

  7. Linux的Transparent Hugepage与关闭方法

    Transparent HugePages是在运行时动态分配内存的,而标准的HugePages是在系统启动时预先分配内存,并在系统运行时不再改变. 因为Transparent HugePages是在运 ...

  8. 封装NSMapTable并简易的使用

    封装NSMapTable并简易的使用 NSMapTable是弱引用的字典,可以用来存储对象,该对象消失了也没有关系,对于控制器越级跳转相当有用:) WeakDictionary.h 与 WeakDic ...

  9. Linux chkconfig命令详解

    chkconfig命令检查.设置系统的各种服务.这是Red Hat公司遵循GPL规则所开发的程序,它可查询操作系统在每一个执行等级中会执行哪些系统服务,其中包括各类常驻服务.谨记chkconfig不是 ...

  10. 剑指offer 11二进制中1的个数

    输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. java版本: public class Solution { public int NumberOf1(int n) { Strin ...