Skip to content

rmja/Bite

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages