rmja / Bite

Fast bit access

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Bite

NuGet package License

Bite provides fast bit access with the types BitReader, BitWriter, and BitView. It supports read and write of different memorepresentations in the form of Lsb0 and Msb0.

Examples

BitReader example:

var reader = new BitReader(new byte[] { 0x1A }, BitOrder.Lsb0);
// or var reader = new BitReader(new byte[] { 0xB0 }, BitOrder.Msb0);
Assert.Equal(0b10u, reader.ReadBits(2));
Assert.Equal(0b110u, reader.ReadBits(3));

BitWriter example:

var buffer = new ArrayBufferWriter<byte>();
var writer = new BitWriter(buffer, BitOrder.Lsb0);
writer.WriteBits(2, 0b10);
writer.WriteBits(3, 0b110);
writer.Pad(); // Write zeros up to the next byte boundary
writer.Flush();
Assert.Equal(new byte[] { 0x1A }, buffer.WrittenSpan.ToArray()); // Or 0xB0 for BitOrder.Msb0

BitView (or equivalently ReadOnlyBitView) example:

var view = new BitView(new byte[] { 0x03, 0x81 }, BitOrder.Lsb0);
// or var view = new BitView(new byte[] { 0xC0, 0x81 }, BitOrder.Msb0);
Assert.True(view[0]);
Assert.True(view[1]);
Assert.False(view[2]);
// etc.

About

Fast bit access

License:MIT License


Languages

Language:C# 100.0%