2017-06-14 30 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