muun-recovery/vendor/github.com/kkdai/bstream
Manu Herrera d301c63596 Release v0.1.0 2019-10-01 12:22:30 -03:00
..
.gitignore Release v0.1.0 2019-10-01 12:22:30 -03:00
.travis.yml Release v0.1.0 2019-10-01 12:22:30 -03:00
LICENSE Release v0.1.0 2019-10-01 12:22:30 -03:00
README.md Release v0.1.0 2019-10-01 12:22:30 -03:00
bstream.go Release v0.1.0 2019-10-01 12:22:30 -03:00

README.md

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.