2014-04-24 27 views
-2

我想讀取5個32位二進制數。我正確閱讀1,5,8和45,但我無法閱讀134,217,728。我的代碼如下:閱讀java中的32位二進制數

FileInputStream file = new FileInputStream("C:/Sn3.edf"); 
BufferedInputStream buff = new BufferedInputStream(file)) { 
    int in; 
    for (int i=0;i<count;i++) { 
     in = buff.read(); 
     System.out.println("  " + in); 
    } 

我試圖改變int長,但沒有奏效。任何幫助表示讚賞。

+3

你的文件的內容是什麼? –

+0

'BufferedInputStream#read'只讀取一個字節。 – ajb

+0

@Luiggi:內容是五個數字。每個數字4個字節(二進制) – munir

回答

3

你沒有發佈一個完整的代碼示例,你沒有發佈你的輸入文件的內容,但無論如何。

http://docs.oracle.com/javase/7/docs/api/java/io/BufferedInputStream.html#read()

按照JDK文檔,BufferedInputStream.read()一次返回一個字節。您一次讀取一個字節,將其存儲在in中,並將其打印到控制檯。如果您的每個號碼都是8位大小,該代碼只適用於您。由於32位整數存儲在文件中,因此您需要一次讀取4個字節(32位/ 8位/字節),然後執行一些數學運算將這些字節轉換爲Java int

+2

或者使用'Scanner'而不是'BufferedInputStream'來通過'int'或者逐行讀取文件內容'int'。 –

+2

或'buff.readInt();' – yitzih

+0

@orzechowskid:謝謝。關於如何一次讀取4個字節的任何建議? – munir