• 20170531 课堂实践 MyOD


    MyOD

    题目

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

    Linux下od功能详解

    od(octal dump)命令可以以八进制、十进制、十六进制和ASCII码来显示文件或者流,它们对于访问或可视地检查文件中不能直接显示在终端上的字符

    • 使用:od [-A 地址进制] [-t 显示格式] 文件
    • 进制
      • o 八进制(系统默认值)
      • d 十进制
      • x 十六进制
      • n 不打印位移值
    • 格式
      • c ASCII字符或反斜杠序列(如 )
      • d 有符号十进制数
      • f 浮点数
      • o 八进制(系统默认值)
      • u 无符号十进制数
      • x 十六进制数
    • e.g.
    radish608@kali:~$ cat abc
    123abc
    a
    s
    d
    radish608@kali:~$ od -tc -tx abc 
    0000000   1   2   3   a   b   c  
       a  
       s  
       d  
    
                   61333231        610a6362        640a730a        0000000a
    0000015
    

    Java实现OD功能

    /**
     * Created by radish608 on 17-5-31.
     */
    
    import java.io.*;
    
    class IO {
        public static void dump(InputStream src) throws IOException {
            try (InputStream input = src) {
                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("
    %07o		", i );
                    }
                    System.out.printf(" %02x%02x%02x%02x	", data[i + 3], data[i + 2], data[i + 1], data[i]);
                    if ((i + 4) % 16 == 0) {
                        System.out.println();
                        System.out.printf("	  ");
                        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("	   ");
                        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("
    %07o
    ", i+3 );
            }
        }
    
    }
    
    public class MyOD {
        public static void main(String[] args) throws IOException {
            IO.dump(new FileInputStream(args[0]));
        }
    }
    
    • 范例文件内容
    123abc12345
    a
    s
    d12adfadfa
    
    • 运行结果
  • 相关阅读:
    python重载四则运算符及输出格式设置
    hdu 1069 Monkey and Banana
    python特殊函数 __len__(self):
    selective_search_rcnn.m中代码
    用list去初始化numpy的array数组 numpy的array和python中自带的list之间相互转化
    把字符串转化为整数
    这就是那个feature map256 256向量
    对faster rcnn代码讲解的很好的一个
    input_shape { dim: 1 dim: 3 dim: 224 dim: 224 }
    faster rcnn的改进方向
  • 原文地址:https://www.cnblogs.com/dky20155212/p/6929651.html
Copyright © 2020-2023  润新知