package multiaddr import ( "errors" "math" "github.com/multiformats/go-varint" ) // CodeToVarint converts an integer to a varint-encoded []byte func CodeToVarint(num int) ([]byte, error) { if num < 0 || num > math.MaxInt32 { return nil, errors.New("invalid code") } return varint.ToUvarint(uint64(num)), nil } func ReadVarintCode(b []byte) (int, int, error) { code, n, err := varint.FromUvarint(b) if err != nil { return 0, 0, err } if code > math.MaxInt32 { // we only allow 32bit codes. return 0, 0, varint.ErrOverflow } return int(code), n, err }