base32
packagestandard libraryThis package is not in the latest version of its module.
Details
Validgo.mod file
The Go module system was introduced in Go 1.11 and is the official dependency management solution for Go.
Redistributable license
Redistributable licenses place minimal restrictions on how software can be used, modified, and redistributed.
Tagged version
Modules with tagged versions give importers more predictable builds.
Stable version
When a project reaches major version v1 it is considered stable.
- Learn more about best practices
Repository
Links
Documentation¶
Overview¶
Package base32 implements base32 encoding as specified byRFC 4648.
Index¶
- Constants
- Variables
- func NewDecoder(enc *Encoding, r io.Reader) io.Reader
- func NewEncoder(enc *Encoding, w io.Writer) io.WriteCloser
- type CorruptInputError
- type Encoding
- func (enc *Encoding) AppendDecode(dst, src []byte) ([]byte, error)
- func (enc *Encoding) AppendEncode(dst, src []byte) []byte
- func (enc *Encoding) Decode(dst, src []byte) (n int, err error)
- func (enc *Encoding) DecodeString(s string) ([]byte, error)
- func (enc *Encoding) DecodedLen(n int) int
- func (enc *Encoding) Encode(dst, src []byte)
- func (enc *Encoding) EncodeToString(src []byte) string
- func (enc *Encoding) EncodedLen(n int) int
- func (enc Encoding) WithPadding(padding rune) *Encoding
Examples¶
Constants¶
const (StdPaddingrune = '='// Standard padding characterNoPaddingrune = -1// No padding)
Variables¶
var HexEncoding =NewEncoding("0123456789ABCDEFGHIJKLMNOPQRSTUV")
HexEncoding is the “Extended Hex Alphabet” defined inRFC 4648.It is typically used in DNS.
var StdEncoding =NewEncoding("ABCDEFGHIJKLMNOPQRSTUVWXYZ234567")
StdEncoding is the standard base32 encoding, as defined inRFC 4648.
Functions¶
funcNewDecoder¶
NewDecoder constructs a new base32 stream decoder.
funcNewEncoder¶
func NewEncoder(enc *Encoding, wio.Writer)io.WriteCloser
NewEncoder returns a new base32 stream encoder. Data written tothe returned writer will be encoded using enc and then written to w.Base32 encodings operate in 5-byte blocks; when finishedwriting, the caller must Close the returned encoder to flush anypartially written blocks.
Example¶
package mainimport ("encoding/base32""os")func main() {input := []byte("foo\x00bar")encoder := base32.NewEncoder(base32.StdEncoding, os.Stdout)encoder.Write(input)// Must close the encoder when finished to flush any partial blocks.// If you comment out the following line, the last partial block "r"// won't be encoded.encoder.Close()}
Output:MZXW6ADCMFZA====
Types¶
typeCorruptInputError¶
type CorruptInputErrorint64
func (CorruptInputError)Error¶
func (eCorruptInputError) Error()string
typeEncoding¶
type Encoding struct {// contains filtered or unexported fields}
An Encoding is a radix 32 encoding/decoding scheme, defined by a32-character alphabet. The most common is the "base32" encodingintroduced for SASL GSSAPI and standardized inRFC 4648.The alternate "base32hex" encoding is used in DNSSEC.
funcNewEncoding¶
NewEncoding returns a new padded Encoding defined by the given alphabet,which must be a 32-byte string that contains unique byte values anddoes not contain the padding character or CR / LF ('\r', '\n').The alphabet is treated as a sequence of byte valueswithout any special treatment for multi-byte UTF-8.The resulting Encoding uses the default padding character ('='),which may be changed or disabled viaEncoding.WithPadding.
func (*Encoding)AppendDecode¶added ingo1.22.0
AppendDecode appends the base32 decoded src to dstand returns the extended buffer.If the input is malformed, it returns the partially decoded src and an error.New line characters (\r and \n) are ignored.
func (*Encoding)AppendEncode¶added ingo1.22.0
AppendEncode appends the base32 encoded src to dstand returns the extended buffer.
func (*Encoding)Decode¶
Decode decodes src using the encoding enc. It writes at mostEncoding.DecodedLen(len(src)) bytes to dst and returns the number of byteswritten. The caller must ensure that dst is large enough to hold allthe decoded data. If src contains invalid base32 data, it will return thenumber of bytes successfully written andCorruptInputError.Newline characters (\r and \n) are ignored.
Example¶
package mainimport ("encoding/base32""fmt")func main() {str := "JBSWY3DPFQQHO33SNRSCC==="dst := make([]byte, base32.StdEncoding.DecodedLen(len(str)))n, err := base32.StdEncoding.Decode(dst, []byte(str))if err != nil {fmt.Println("decode error:", err)return}dst = dst[:n]fmt.Printf("%q\n", dst)}
Output:"Hello, world!"
func (*Encoding)DecodeString¶
DecodeString returns the bytes represented by the base32 string s.If the input is malformed, it returns the partially decoded data andCorruptInputError. New line characters (\r and \n) are ignored.
Example¶
package mainimport ("encoding/base32""fmt")func main() {str := "ONXW2ZJAMRQXIYJAO5UXI2BAAAQGC3TEEDX3XPY="data, err := base32.StdEncoding.DecodeString(str)if err != nil {fmt.Println("error:", err)return}fmt.Printf("%q\n", data)}
Output:"some data with \x00 and \ufeff"
func (*Encoding)DecodedLen¶
DecodedLen returns the maximum length in bytes of the decoded datacorresponding to n bytes of base32-encoded data.
func (*Encoding)Encode¶
Encode encodes src using the encoding enc,writingEncoding.EncodedLen(len(src)) bytes to dst.
The encoding pads the output to a multiple of 8 bytes,so Encode is not appropriate for use on individual blocksof a large data stream. UseNewEncoder instead.
Example¶
package mainimport ("encoding/base32""fmt")func main() {data := []byte("Hello, world!")dst := make([]byte, base32.StdEncoding.EncodedLen(len(data)))base32.StdEncoding.Encode(dst, data)fmt.Println(string(dst))}
Output:JBSWY3DPFQQHO33SNRSCC===
func (*Encoding)EncodeToString¶
EncodeToString returns the base32 encoding of src.
Example¶
package mainimport ("encoding/base32""fmt")func main() {data := []byte("any + old & data")str := base32.StdEncoding.EncodeToString(data)fmt.Println(str)}
Output:MFXHSIBLEBXWYZBAEYQGIYLUME======
func (*Encoding)EncodedLen¶
EncodedLen returns the length in bytes of the base32 encodingof an input buffer of length n.
func (Encoding)WithPadding¶added ingo1.9
WithPadding creates a new encoding identical to enc exceptwith a specified padding character, or NoPadding to disable padding.The padding character must not be '\r' or '\n',must not be contained in the encoding's alphabet,must not be negative, and must be a rune equal or below '\xff'.Padding characters above '\x7f' are encoded as their exact byte valuerather than using the UTF-8 representation of the codepoint.