mirror of
https://github.com/wavetermdev/backup.git
synced 2026-08-05 13:57:07 -07:00
write a quick set of functions to pack and unpack byte arrays
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
package utilfn
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"encoding/binary"
|
||||
"io"
|
||||
)
|
||||
|
||||
func PackValue(w io.Writer, barr []byte) error {
|
||||
viBuf := make([]byte, binary.MaxVarintLen64)
|
||||
viLen := binary.PutUvarint(viBuf, uint64(len(barr)))
|
||||
_, err := w.Write(viBuf[0:viLen])
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
_, err = w.Write(barr)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func UnpackValue(r *bufio.Reader) ([]byte, error) {
|
||||
lenVal, err := binary.ReadUvarint(r)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
rtnBuf := make([]byte, int(lenVal))
|
||||
_, err = io.ReadFull(r, rtnBuf)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return rtnBuf, nil
|
||||
}
|
||||
Reference in New Issue
Block a user