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文件夹时已经耗费了很多时间。因此没有及时提交,很抱歉。