github.com/keysonZZZ/kmg@v0.0.0-20151121023212-05317bfd7d39/encoding/kmgGob/UrlBase64Marshal.go (about)

     1  package kmgGob
     2  
     3  import (
     4  	"bytes"
     5  	"encoding/base64"
     6  	"encoding/gob"
     7  )
     8  
     9  func UrlBase64Marshal(obj interface{}) (out []byte, err error) {
    10  	out1, err := Marshal(obj)
    11  	if err != nil {
    12  		return
    13  	}
    14  	out = make([]byte, base64.URLEncoding.EncodedLen(len(out1)))
    15  	base64.URLEncoding.Encode(out, out1)
    16  	return
    17  }
    18  
    19  func UrlBase64Unmarshal(data []byte, obj interface{}) (err error) {
    20  	data1 := make([]byte, base64.URLEncoding.DecodedLen(len(data)))
    21  	_, err = base64.URLEncoding.Decode(data1, data)
    22  	if err != nil {
    23  		return
    24  	}
    25  	b := bytes.NewBuffer(data1)
    26  	encoder := gob.NewDecoder(b)
    27  	err = encoder.Decode(obj)
    28  	return
    29  }