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」からビットごとに読み取るにはどうすればよいですか?

4

2 に答える 2

4

これ:

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

あなたが思っていることをしません。具体的には、コードが示唆しているように見えるビット パターンで 2 バイトを書き込みません。

数値01101000は で始まるため、8 進数の整数リテラルとして解釈され0ます。10 進数では、それは数値になり295424ます。それを a にキャストするとbyte、下位 8 ビットのみが保持され、たまたま0. したがって、ファイルの最初のバイトは0.

数値10101010は 10 進整数リテラル (1000 万、100、1000、10 の数値) として解釈されます。繰り返しますが、にキャストするとbyte、下位 8 ビットのみが保持されるため、ファイルの 2 番目のバイトに値18(10 進数) が含まれます。

Java 7 を使用している場合は、数字の前に を付けることで、コードでバイナリ リテラルを使用できます0b

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

2 バイトを読み戻すには、ファイルを a で開き、FileInputStreamそこから 2 バイトを読み取ります。

于 2012-11-13T13:16:32.750 に答える
4

ビットごとに読み取ることはできません。バイトごとに読み取ってから、バイトをビットごとにシフトでき ます。

于 2012-11-13T13:05:38.757 に答える