Skip to content

high-moctane/go-bitio

Repository files navigation

go-bitio

TravisCI GolangCI CodeCov GoDoc

Package bitio implements a simple bitwise reader and writer.

The client can use BitReader.ReadBit() to read a bit from an io.ByteReader, and also use BitWriter.WriteBit() to write a bit to an io.ByteWriter. After write with BitWriter.WriteBit(), you must call BitWriter.Flush() or BitWriter.FlushWithOnes().

Examples

BitReader

r := NewBitReader(bytes.NewBuffer([]byte{0b10110100}))
bit, err := r.ReadBit()	// 1, nil
bit, err := r.ReadBit()	// 0, nil
bit, err := r.ReadBit()	// 1, nil
bit, err := r.ReadBit()	// 1, nil
bit, err := r.ReadBit()	// 0, nil
bit, err := r.ReadBit()	// 1, nil
bit, err := r.ReadBit()	// 0, nil
bit, err := r.ReadBit()	// 0, nil
bit, err := r.ReadBit()	// 0, io.EOF

BitWriter

buf := new(bytes.Buffer)
w := NewBitWriter(buf)
defer w.Flush()

err := w.WriteBit(1)
err := w.WriteBit(0)
err := w.WriteBit(1)
err := w.WriteBit(1)
err := w.WriteBit(0)
err := w.WriteBit(1)

byte, err := buf.ReadByte()	// 0b10110100, nil

About

A simple bitwise reader and writer implementation written in Go.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages