Is it possible to read/write bits from a file using JAVA?

后端 未结 9 929
一生所求
一生所求 2020-12-09 21:34

To read/write binary files, I am using DataInputStream/DataOutputStream, they have this method writeByte()/readByte(), but what I want to do is read/write bits? Is it possib

9条回答
  •  暖寄归人
    2020-12-09 22:03

    Please take a look at my bit-io library https://github.com/jinahya/bit-io, which can read and write non-octet-aligned values such as a 1-bit boolean or 17-bit unsigned integer.

    
      
      com.googlecode.jinahya
      bit-io
      1.0-alpha-13
    
    

    This library reads and writes arbitrary-length bits.

    final InputStream stream;
    final BitInput input = new BitInput(new BitInput.StreamInput(stream));
    
    final int b = input.readBoolean(); // reads a 1-bit boolean value
    final int i = input.readUnsignedInt(3); // reads a 3-bit unsigned int
    final long l = input.readLong(47); // reads a 47-bit signed long
    
    input.align(1); // 8-bit byte align; padding
    
    
    final WritableByteChannel channel;
    final BitOutput output = new BitOutput(new BitOutput.ChannelOutput(channel));
    
    output.writeBoolean(true); // writes a 1-bit boolean value
    output.writeInt(17, 0x00); // writes a 17-bit signed int
    output.writeUnsignedLong(54, 0x00L); // writes a 54-bit unsigned long
    
    output.align(4); // 32-bit byte align; discarding
    

提交回复
热议问题