2012-11-13 124 views
0

如何從文件中讀取位?我寫了位文件類似的東西:從文件中讀取位

File plik=new File("bitowo"); 
    FileOutputStream fos=new FileOutputStream(plik); 
    byte[] test =new byte[2]; 
    test[0]=(byte)01101000; 
    test[1]=(byte)10101010; 
    fos.write(test); 
    fos.close(); 

和「bitowo」只有2個字節,但如何從文件中讀取「bitowo」位後位?

+1

我希望你知道這個事實,你的字節有一個完全不同的位表示! – jlordo

+0

以上代碼錯誤?我如何正確地做到這一點? – user1518451

回答

4

此:

test[0]=(byte)01101000; 
test[1]=(byte)10101010; 

沒有做什麼,你認爲它。具體來說,它不會寫出代碼似乎暗示的位模式的兩個字節。

編號01101000將被解釋爲八進制整數字面值,因爲它以0開頭。在十進制中,這將是數字295424。當你將其轉換爲byte時,只保留較低的8位,而那些恰好是0。所以文件中的第一個字節是0

數字10101010將被解釋爲十進制整數文字(數字一千一百一十一千和十)。再次,通過將其轉換爲byte,只保留較低的8位,因此文件中的第二個字節將包含值18(十進制)。

如果您使用的是Java 7,您可以通過前綴數字與0b使用二進制文字在你的代碼:

test[0]=(byte)0b01101000; 
test[1]=(byte)0b10101010; 

要讀取兩個字節,則只需打開該文件與FileInputStream和閱讀兩個字節。

+0

棒極了!我從文件使用int讀取int到BinaryString,並將零添加到字符串(如果int小於128)。 – user1518451