X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fcommons%2Fdata%2FBitOutputStream.java;h=f422669e211bc11a17914efab082062c7376c541;hb=965adace2b47642e2ca84f499cc32683c12059c6;hp=6730b2c51fad5843cdc168820e534128ea3ed49c;hpb=835e4e7c1c7313e609a958b5f685506ecace76f4;p=svjatoslav_commons.git diff --git a/src/main/java/eu/svjatoslav/commons/data/BitOutputStream.java b/src/main/java/eu/svjatoslav/commons/data/BitOutputStream.java index 6730b2c..f422669 100755 --- a/src/main/java/eu/svjatoslav/commons/data/BitOutputStream.java +++ b/src/main/java/eu/svjatoslav/commons/data/BitOutputStream.java @@ -1,6 +1,6 @@ /* * Svjatoslav Commons - shared library of common functionality. - * Copyright ©2012-2014, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu + * Copyright ©2012-2019, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu * * This program is free software; you can redistribute it and/or * modify it under the terms of version 3 of the GNU Lesser General Public License @@ -9,53 +9,52 @@ package eu.svjatoslav.commons.data; -/** - * Write individual bits to the output stream. - */ import java.io.IOException; import java.io.OutputStream; +/** + * Write individual bits to the output stream. + */ public class BitOutputStream { - int currentByte; - int currentBytePointer; - - OutputStream outputStream; - - public BitOutputStream(final OutputStream outputStream) { - currentByte = 0; - currentBytePointer = 0; - this.outputStream = outputStream; - }; - - public void finishByte() throws IOException { - if (currentBytePointer != 0) { - outputStream.write(currentByte); - currentBytePointer = 0; - } - } - - public void storeBits(final int data, final int bitCount) - throws IOException { - for (int i = bitCount - 1; i >= 0; i--) { - - int mask = 1; - mask = mask << i; - - final int currentBit = data & mask; - currentByte = currentByte << 1; - - if (currentBit != 0) - currentByte = currentByte | 1; - currentBytePointer++; - - if (currentBytePointer == 8) { - currentBytePointer = 0; - outputStream.write(currentByte); - currentByte = 0; - } - } - } + private final OutputStream outputStream; + private int currentByte; + private int currentBytePointer; + + public BitOutputStream(final OutputStream outputStream) { + currentByte = 0; + currentBytePointer = 0; + this.outputStream = outputStream; + } + + public void finishByte() throws IOException { + if (currentBytePointer != 0) { + outputStream.write(currentByte); + currentBytePointer = 0; + } + } + + public void storeBits(final int data, final int bitCount) + throws IOException { + for (int i = bitCount - 1; i >= 0; i--) { + + int mask = 1; + mask = mask << i; + + final int currentBit = data & mask; + currentByte = currentByte << 1; + + if (currentBit != 0) + currentByte = currentByte | 1; + currentBytePointer++; + + if (currentBytePointer == 8) { + currentBytePointer = 0; + outputStream.write(currentByte); + currentByte = 0; + } + } + } }