2017-2018-1 20155305 《信息安全系统设计基础》第四周学习总结(课堂提交作业未来得及提交码云链接myod补充博客)
2017-12-07 17:08
501 查看
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 20155232 《信息安全系统设计基础》第四周学习总结以及课上myod练习补充博客
- 2017-2018-1 20155326 《信息安全系统设计基础》第四周学习总结及myod改进版的补交
- 2017-2018-1 20155320 《信息安全系统设计基础》第四周学习总结(课堂实践补交+myhead与mytail加分项目)
- 20155326 2017-2018-1 《信息安全系统设计基础》第2周学习及课堂总结myod
- 2017-2018-1 20155305 《信息安全系统设计基础》第七周学习总结
- 2017-2018-1 20155303 《信息安全系统设计基础》第四周学习总结
- # 2017-2018-1 20155210 《信息安全系统设计基础》第四周学习总结
- 2017-2018-1 20155302 《信息安全系统设计基础》第四周学习总结
- 2017-2018-1 20155220 《信息安全系统设计基础》第四周学习总结
- 2017-2018-1 20155327 《信息安全系统设计基础》第四周学习总结
- 2017-2018-1 20155228 《信息安全系统设计基础》第四周学习总结
- 2017-2018-1 20155217 《信息安全系统设计基础》第四周学习总结
- 2017-2018-1 20155226 《信息安全系统设计基础》第四周学习总结
- 2017-2018-1 20155233 《信息安全系统设计基础》第四周学习总结
- 2017-2018-1 20155305 《信息安全系统设计基础》第5周学习总结
- 2017-2018-1 20155317 《信息安全系统设计基础》第四周学习总结
- 2017-2018-1 20155308 《信息安全系统设计基础》第四周学习总结(第四周测试)
- 2017-2018-1 20155318 《信息安全系统设计基础》第四周学习总结
- 2017-2018-1 20155305 《信息安全系统设计基础》第11周学习总结
- 2017-2018-1 20155307 《信息安全系统设计基础》第2周学习总结(含课堂测试五)