我试图解决这个问题,但我不断提出一些没有帮助的东西我确信这很容易(当你知道当然如何;))
我想要做的是使用如下字节流读取文件:
while((read = in.read()) != -1){
//code removed to save space
Integer.toHexString(read);
System.out.println(read);
}
Run Code Online (Sandbox Code Playgroud)
当它将Hex打印到屏幕时,它将打印出精确的数字,例如31 13 12 0
但是当谈到应该是01 31的十六进制代码时,它将打印0 131.我想将它读入一个变量,就像你在十六进制编辑器中看到的那样,即00 11 21 31没有单个数字,因为我需要扫描整个文件,寻找我知道如何做的模式我只是坚持这个:/
所以总之我需要一个变量来包含两个十六进制字符,即int temp = 01而不是int temp = 0,我希望这一切都有意义,我有点困惑,因为它是凌晨3点!
如果有人知道如何做到这一点,我会非常感激,ps感谢您提前帮助这个网站节省了大量的研究并且学到了很多东西!
非常感谢.
这个方法:
public static void printHexStream(final InputStream inputStream, final int numberOfColumns) throws IOException{
long streamPtr=0;
while (inputStream.available() > 0) {
final long col = streamPtr++ % numberOfColumns;
System.out.printf("%02x ",inputStream.read());
if (col == (numberOfColumns-1)) {
System.out.printf("\n");
}
}
}
Run Code Online (Sandbox Code Playgroud)
会输出这样的东西:
40 32 38 00 5f 57 69 64 65 43
68 61 72 54 6f 4d 75 6c 74 69
42 79 74 65 40 33 32 00 5f 5f
69 6d 70 5f 5f 44 65 6c 65 74
65 46 69 6c 65 41 40 34 00 5f
53 65 74 46 69 6c 65 50 6f 69
6e 74 65 72 40 31 36 00 5f 5f
69 6d 70 5f 5f 47 65 74 54 65
6d 70 50 61 74 68 41 40 38 00
Run Code Online (Sandbox Code Playgroud)
这是你在找什么?