20155306 第十五周课堂实践

20155306 第十五周课堂实践

实践内容

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

关于Linux下od命令

名称:od

作用:格式化输出文件中的数据

说明:常见的文件为文本文件和二进制文件。此命令主要用来查看保存在二进制文件中的值。

格式:od [-A 地址进制] [-t 显示格式] 文件

举例:-a:等价于 -t a.表示ASCII码的名字

-b:等价于-t o1,选择单字节,并且按照3个数值位的八进制数进行解释

-c:等价于-t c,选择ASCII码字符或者是转义字符

-d:等价于-t u2:选择无符号2字节单位

-f:等价于-t fF,选择单精度浮点数

-i:等价于-t dI,选择十进制整型

-l:等价于-t dL,选择十进制长整型

-o:等价于-t o2,选择两个字节的单元并按照八进制进行解释

-s:等价于-t d2,选择两字节单元并按照十进制解释

-x:等价于-t x2,选择两个字节单元,并作十六进制解释

-v:不用*代替重复的输出

-w:用于设置每行的宽度,即每行上输出的字节数

实验代码

public class MyOD {
    public static String format(byte []bt){
        int line=0 ;
        StringBuilder buf=new StringBuilder() ;
        for(byte d:bt){
            if(line%16==0)
                buf.append(String.format("%05x: ", line)) ;
            buf.append(String.format("%02x  ", d)) ;
            line++ ;
            if(line%16==0)
                buf.append("\n");
        }
        buf.append("\n") ;
        return buf.toString();
    }
    public static byte[] readFile(String file) throws IOException{
        InputStream is=new FileInputStream(file) ;
        int length=is.available() ;
        byte bt[]=new byte[length] ;
        is.read(bt) ;
        return bt;
    }
    public static  void main(String[]agrs) throws IOException{
        byte []bt=MyOD.readFile("F:\\20155306.txt");
        String hexData=MyOD.format(bt) ;
        System.out.println(hexData);
    }
}

实验截图

补充:第十三周教材代码检查

在IDEA中对P145 MathTool.java 使用JUnit进行单元测试,测试用例不少于三个,要包含正常情况,边界情况。

提交测试代码和运行结果截图,加上学号水印,提交码云代码链接。

测试代码如下:

/**
 * Created by lenovo on 2017/5/17.
 */
import junit.framework.TestCase;
import org.junit.Test;
/**
 * Created by hp on 2017/5/17.
 */
public class MathToolTest extends TestCase {
    @Test
    public void testSum() throws Exception {
        assertEquals(1, 1);
        assertEquals(3, MathTool.sum(1, 2));
        assertEquals(10, MathTool.sum(1, 2, 3, 4));
        assertEquals(15, MathTool.sum(1, 2, 3, 4, 5));
        assertEquals(-10, MathTool.sum(-1,-2,-3,-4));
    }
}

运行截图如下:

未及时提交原因:

当时打开自己码云文件夹找到该代码,点击打开时,发现出现错误,后来才发现是因为文件夹ideaprojects里没有这个程序。我后来想了想可能是刚学习Java的时候不太懂,有时候是复制ideaprojects文件夹里的代码,有时候直接剪切代码到码云的那个文件夹了,导致idea里没有这个程序打不开代码。但是当我课上分析明白怎么回事,把代码从码云复制到idea文件夹时已经耗费了很多时间。因此没有及时提交,很抱歉。

posted on 2017-06-04 17:15  20155306  阅读(93)  评论(0编辑  收藏  举报

导航