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;

不做你认为它做的事。具体来说,它不会使用代码似乎建议的位模式写入两个字节。

该数字01101000将被解释为八进制整数文字,因为它以0. 在十进制中,这将是数字295424。当您将其转换为 abyte时,仅保留低 8 位,而那些恰好是0. 所以文件中的第一个字节是0.

该数字10101010将被解释为十进制整数文字(数字千万、十万一千零)。同样,通过将其转换为byte,仅保留低 8 位,因此文件中的第二个字节将包含值18(十进制)。

如果您使用的是 Java 7,则可以在代码中使用二进制文字,方法是在数字前加上0b:

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

要读回这两个字节,只需用 a 打开文件FileInputStream并从中读取两个字节。

于 2012-11-13T13:16:32.750 回答
4

你不能逐位阅读。您可以 逐字节读取,然后逐位移动字节。

于 2012-11-13T13:05:38.757 回答