/bstream

A Bit Stream helper in Golang

Primary LanguageGoMIT LicenseMIT

BStream: A Bit Stream helper in Golang

GitHub license GoDoc Build Status

Install

go get github.com/kkdai/bstream

Usage

	//New a bit stream writer with default 5 byte
	b := NewBStreamWriter(5)
	
	//Write 0xa0a0 into bstream
	b.WriteBits(0xa0a0, 16)
	
	//Read 4 bit out
	result, err := b.ReadBits(4)
	if err != nil {
		log.Printf("result:%x", result)
		//result:a
	}

Notes

  • BStream is not thread safe. When you need to use it from different goroutines, you need to manage locking yourself.
  • You can use the same *BStream object for reading & writing. However note that currently it is possible to read zero-value data if you read more bits than what has been written.
  • BStream will not modify the data provided to NewBStreamReader. You can reuse the same *BStream object for writing and it will allocate a new underlying buffer.

Inspired

Benchmark

BenchmarkWriteBits-4	100000000	        15.3 ns/op
BenchmarkReadBits-4 	50000000	        26.5 ns/op

Project52

It is one of my project 52.

License

This package is licensed under MIT license. See LICENSE for details.