2017-06-14 31 views
0

目标:输入.pcap文件并在新行上输出每个字节(以二进制形式)。
当前代码:
使用Java读取和输出.pcap文件

import java.io.FileInputStream; 
public class display { 
    private static FileInputStream input; 
    public static void main(String[] args) { 
     try { 
      input = new FileInputStream("theDump.pcap"); 
      int content = 0; 
      int counter = 0; 
      while ((content = input.read()) != -1) { 
       System.out.println(counter + ". " + (byte)content); 
       counter++; 
      } 
     } catch (Exception e) { 
      System.out.println("Error"); 
     } 
    } 
} 

的.pcap文件是使用tcpdump的-w标志制作。
电流以上代码的输出:
0 -44
1. -61
2. -78
3. -95
4. 2
5. 0
6. 4
7. 0
8.0
9.0
...等等...
我试图让以可读的二进制输出,那么255应该输出为1111 1111
另外,我也不允许从附带JDK 8

回答

0

您正在寻找的int转换为二进制的那些分开使用任何外部库,但在代码中没有添加任何东西做到这一点。 Integer包装类包含built-in API,可能会帮助你:

System.out.println(counter + ". " + Integer.toBinaryString(content)); 
+0

谢谢!另外,有没有办法确保所有的输出是8位二进制?例如:0输出为0,而不是0000 0000 – Sam

+0

您可以执行以下操作:''''''''''''''''''''''' (counter +“。”+ binary.substring(binary.length() - 8));' –

+0

谢谢你解决了!如果你不介意,你能解释为什么我们将256添加到int“内容”中。 在学习计算机科学时,我了解到一个字节是8位,可以有最大值255和最小值0 为什么Java在字节上放了一个神秘的负号? – Sam