BitStream allows for easy manipulation of long strings of bits, for both reading and writing.

It's easy to get started:

var bitstream = BitStream();

You can also start it with a Uint8List:

var bitstream = BitStream(stream: myBytes);

To write to the stream:

bitstream.write(5,bits: 3); //writes 101 (binary) to the stream
bitstream.writeBool(true); //writes 1 (binary) to the stream
bitstream.writeBytes(Uint8List.fromList(<int>[0,255,127]),bytes:3); //writes 0x00FF7F to the stream
bitstream.output(); //will output 1011000000001111111101111111 to the console

Reading is also easy:; //reads 22 (decimal) from the stream; //reads 15 (decimal) from the stream
bitstream.readBool(); //reads true from the stream

Supported Data Types

Data TypeRead MethodWrite Method
intread({bytes, bits})write(input, {bytes, bits})
string (ASCII)readAsciiString({bytes, bits})writeAsciiString(input, {bytes, bits})
string (HEX)readHexString({bytes, bits})writeHexString(input, {bytes, bits})
Uint8ListreadBytes({bytes, bits})writeBytes(input, {bytes, bits})
BitStreamreadBitStream({bytes, bits})writeBitStream(input, {bytes, bits})

Additional Methods

Method NameDescription
checkBit(int bit)Returns a bool if a bit is set or not (does not progress the cursor)
output()Prints a binary representation of the current stream to the console
toString()Returns a binary representation of the current stream
getStream()Gets the current stream data as a Uint8List
getLength()Gets the current length of the stream
getCursor()Gets the current cursor position
resetCursor()Resets the cursor position