您的位置:首页 > 编程语言 > Java开发

JAVA IO - 将文件内容转化为十六进制显示

2014-01-10 00:00 281 查看
摘要: String.format("%02X ", value) 将字符转化为十六进制

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintStream;

public class ToHexTest {
public static void convertToHex(PrintStream out, File file) throws IOException {
InputStream is = new FileInputStream(file);

int bytesCounter =0;
int value = 0;
StringBuilder sbHex = new StringBuilder();
StringBuilder sbText = new StringBuilder();
StringBuilder sbResult = new StringBuilder();

while ((value = is.read()) != -1) {
//convert to hex value with "X" formatter
sbHex.append(String.format("%02X ", value));

//If the chracater is not convertable, just print a dot symbol "."
if (!Character.isISOControl(value)) {
sbText.append((char)value);
}else {
sbText.append(".");
}

//if 16 bytes are read, reset the counter,
//clear the StringBuilder for formatting purpose only.
if(bytesCounter==15){
sbResult.append(sbHex).append("      ").append(sbText).append("\n");
sbHex.setLength(0);
sbText.setLength(0);
bytesCounter=0;
}else{
bytesCounter++;
}
}

//if still got content
if(bytesCounter!=0){
//add spaces more formatting purpose only
for(; bytesCounter<16; bytesCounter++){
//1 character 3 spaces
sbHex.append("   ");
}
sbResult.append(sbHex).append("      ").append(sbText).append("\n");
}

out.print(sbResult);
is.close();
}

public static void main(String[] args) throws IOException
{
//display output to console
convertToHex(System.out, new File("c:/work/hello/helloworld"));

//write the output into a file
convertToHex(new PrintStream("c:/work/hello/helloworld.hex"), new File("c:/work/hello/helloworld"));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: