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

java parse binary file and convert to hex

本问题已经有最佳答案,请猛点这里访问。

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

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

我想用Java解析二进制文件。第一张图片是十六进制编辑器打开的文件,可以看到从0000000到0000003是ef ef ef

enter image description here

这是我的密码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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
String str  = Integer.toHexString(b);

字节是用Java签名的。你需要:

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

然后,为了确保您需要两个数字:

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