java解析二进制文件并转换为十六进制

时间:2016-02-23 03:51:26

标签: java binary hex

请仔细阅读我的问题,然后判断它是否重复

我是绿色的。如果我的描述中有任何错误,请帮我弄清楚

我想用java解析二进制文件。第一张图片是由十六进制编辑器打开的文件,你可以看到000000 0到000000 3 ef ef ef ef ef

enter image description here

这是我的代码

String filepath = "D:\\CHR_2_20151228132500.dat.gz";
File file = new File(filepath);
FileInputStream fis = new FileInputStream(file);

GZIPInputStream gzip = new GZIPInputStream(fis);

DataInputStream din = new DataInputStream(gzip);

byte[] bytes = new byte[20];

din.read(bytes, 0, 4);

for (byte b : bytes) {
    String str  = Integer.toHexString(b);
    System.out.print(str);
}

这是我解析的结果,你可以看到每个 ef 之间有 ffffff 和几个零附加

enter image description here

我想在十六进制编辑器中获取与数据相同的数据。我可以得到这个吗?

1 个答案:

答案 0 :(得分:1)

String str  = Integer.toHexString(b);

字节用Java签名。你需要:

String str  = Integer.toHexString(b & 0xff);

然后确保您需要的两位数字:

String str  = Integer.toHexString((b & 0xff)+256).substring(1);