packageerjinzhi;importjava.io.DataInputStream;importjava.io.DataOutputStream;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io...
package erjinzhi;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class ReadBinaryTest {
public void testDataInputStream(String filepath) throws IOException {
File file = new File(filepath);
DataInputStream din = new DataInputStream(new FileInputStream(file));
StringBuilder hexData = new StringBuilder();
StringBuilder asciiData = new StringBuilder();
byte temp = 0;
for(int i=0;i
temp = din.readByte();
// 以十六进制的无符号整数形式返回一个字符串表示形式。
String str = Integer.toHexString(temp);
// System.out.println(++i +":" + Integer.toHexString(temp).length() + ":" + Integer.toHexString(temp));
// System.out.flush();
if(str.length() == 8) {//去掉补位的f
str = str.substring(6);
}
if(str.length() == 1) {
str = "0"+str;
}
hexData.append(str.toUpperCase());
//转换成ascii码
String ascii = "";
if(temp>34 && temp <127) {
char c = (char)temp;
ascii = c+"";
}else{
ascii = ".";
}
asciiData.append(ascii);
//System.out.println(str.toUpperCase()+"|"+temp+"|"+ascii);
}
//计算行数
int line = hexData.toString().length()/32;
din.close();
StringBuilder lines = new StringBuilder();
for(int i=0;i<=line;i++) {
String li = i+"0";
if(li.length() == 2){
li = "00"+li;
}
if(li.length() == 3) {
li = "0"+li;
}
lines.append(li);
}
System.out.println(lines.toString());
}
public static void main(String[] args) throws IOException {
String filepath = "C:\\rf\\ccccc.pdf";
ReadBinaryTest test = new ReadBinaryTest();
test.testDataInputStream(filepath);
FileOutputStream fout = new FileOutputStream("c:\\b.txt");//将十六进制数存成文本
fout.close();
}
}
展开