在Java中读取和输出.pcap文件

在Java中读取和输出.pcap文件,java,network-programming,pcap,fileinputstream,tcpdump,Java,Network Programming,Pcap,Fileinputstream,Tcpdump,目标:输入一个.pcap文件并在新行上输出每个字节(二进制形式)。 当前代码: import java.io.FileInputStream; public class display { private static FileInputStream input; public static void main(String[] args) { try { input = new FileInputStream("theDump.pcap"

目标:输入一个.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文件是使用带有-w标志的tcpdump生成的
上述代码的当前输出:
0. -44
1. -61
2. -78
3. -95
4.2
5.0
6.4
7.0
8.0
90
... 等等
我试图以可读的二进制格式获取输出,因此255应该作为1111111输出

此外,除了JDK 8附带的库之外,我不允许使用任何外部库。您正在寻找将
int
转换为二进制的方法,但没有在代码中添加任何东西来实现这一点<代码>整数包装类包含一个可帮助您完成以下任务的:

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

谢谢还有,有没有办法确保所有的输出都是8位二进制的?进行您建议的更改后,某些输出不在8位中,例如:0作为0输出,而不是0000 000。您可以执行以下操作:
String binary=Integer.toBinaryString(256+内容);System.out.println(计数器+““+binary.substring(binary.length()-8))谢谢你解决了这个问题!如果你不介意的话,你能解释一下为什么我们在int“content”中加256吗。在学习计算机科学时,我了解到一个字节是8位,最大值为255,最小值为0。为什么Java会在字节上加上神秘的负号?为了理解这一点,我建议阅读以下解释: