Skip to content

LaevusDexter/crunch

 
 

Repository files navigation

crunch

godoc travis codecov go report card edit on repl.it

manipulate bytes and bits in golang with ease

install

$ go get github.com/superwhiskers/crunch 

benchmarks

MiniBuffer performs on average more than twice as fast as bytes.Buffer in both writing and reading

BenchmarkBufferWriteBytes-4	50000000 36.3 ns/op 0 B/op 0 allocs/op BenchmarkBufferReadBytes-4	20000000 100 ns/op 0 B/op 0 allocs/op BenchmarkBufferWriteU32LE-4	30000000 47.7 ns/op 0 B/op 0 allocs/op BenchmarkBufferReadU32LE-4	10000000 170 ns/op 8 B/op 1 allocs/op BenchmarkBufferReadBit-4	20000000 113 ns/op 0 B/op 0 allocs/op BenchmarkBufferReadBits-4 5000000 253 ns/op 0 B/op 0 allocs/op BenchmarkBufferSetBit-4	20000000 101 ns/op 0 B/op 0 allocs/op BenchmarkBufferClearBit-4	20000000 99.6 ns/op 0 B/op 0 allocs/op BenchmarkMiniBufferWriteBytes-4	200000000 6.71 ns/op 0 B/op 0 allocs/op BenchmarkMiniBufferReadBytes-4	2000000000 1.48 ns/op 0 B/op 0 allocs/op BenchmarkMiniBufferWriteU32LE-4	100000000 21.6 ns/op 0 B/op 0 allocs/op BenchmarkMiniBufferReadU32LE-4	100000000 11.7 ns/op 0 B/op 0 allocs/op BenchmarkMiniBufferReadBit-4	2000000000 1.71 ns/op 0 B/op 0 allocs/op BenchmarkMiniBufferReadBits-4	100000000 14.4 ns/op 0 B/op 0 allocs/op BenchmarkMiniBufferSetBit-4	500000000 3.05 ns/op 0 B/op 0 allocs/op BenchmarkMiniBufferClearBit-4	500000000 3.16 ns/op 0 B/op 0 allocs/op BenchmarkStdByteBufferWrite-4	50000000 23.6 ns/op 0 B/op 0 allocs/op BenchmarkStdByteBufferRead-4	200000000 7.18 ns/op 0 B/op 0 allocs/op 

example

package main import ( "fmt" "github.com/superwhiskers/crunch" ) func main() { // creates a new buffer with four zeroes buf := crunch.NewBuffer([]byte{0x00, 0x00, 0x00, 0x00}) // write the byte `0x01` to the first offset, and move the offset forward one buf.WriteByteNext(0x01) // write the byte `0x01` to the second offset, and move the offset forward one buf.WriteByteNext(0x01) // seek the offset back one buf.SeekByte(-1, true) // write the bytes `0x02` and `0x03` to the second and third offsets, respectively buf.WriteBytesNext([]byte{0x02, 0x03}) // write the byte `0x04` to offset `0x03` buf.WriteByte(0x03, 0x04) // output the buffer's contents to the console fmt.Printf("%v\n", buf.Bytes()) }

license

lgplv3

About

take bytes out of things easily ✨🍪

Resources

License

GPL-3.0, LGPL-3.0 licenses found

Licenses found

GPL-3.0
license.gpl
LGPL-3.0
license.lesser

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • Go 100.0%