Commit cce3de79 authored by David Symonds's avatar David Symonds

encoding/base32: add DecodeString and EncodeToString helper methods.

This makes encoding/base32 be consistent with encoding/base64.

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/5615053
parent 77f11f3e
...@@ -125,6 +125,13 @@ func (enc *Encoding) Encode(dst, src []byte) { ...@@ -125,6 +125,13 @@ func (enc *Encoding) Encode(dst, src []byte) {
} }
} }
// EncodeToString returns the base32 encoding of src.
func (enc *Encoding) EncodeToString(src []byte) string {
buf := make([]byte, enc.EncodedLen(len(src)))
enc.Encode(buf, src)
return string(buf)
}
type encoder struct { type encoder struct {
err error err error
enc *Encoding enc *Encoding
...@@ -298,6 +305,13 @@ func (enc *Encoding) Decode(dst, src []byte) (n int, err error) { ...@@ -298,6 +305,13 @@ func (enc *Encoding) Decode(dst, src []byte) (n int, err error) {
return return
} }
// DecodeString returns the bytes represented by the base32 string s.
func (enc *Encoding) DecodeString(s string) ([]byte, error) {
dbuf := make([]byte, enc.DecodedLen(len(s)))
n, err := enc.Decode(dbuf, []byte(s))
return dbuf[:n], err
}
type decoder struct { type decoder struct {
err error err error
enc *Encoding enc *Encoding
......
...@@ -51,9 +51,8 @@ func testEqual(t *testing.T, msg string, args ...interface{}) bool { ...@@ -51,9 +51,8 @@ func testEqual(t *testing.T, msg string, args ...interface{}) bool {
func TestEncode(t *testing.T) { func TestEncode(t *testing.T) {
for _, p := range pairs { for _, p := range pairs {
buf := make([]byte, StdEncoding.EncodedLen(len(p.decoded))) got := StdEncoding.EncodeToString([]byte(p.decoded))
StdEncoding.Encode(buf, []byte(p.decoded)) testEqual(t, "Encode(%q) = %q, want %q", p.decoded, got, p.encoded)
testEqual(t, "Encode(%q) = %q, want %q", p.decoded, string(buf), p.encoded)
} }
} }
...@@ -99,6 +98,10 @@ func TestDecode(t *testing.T) { ...@@ -99,6 +98,10 @@ func TestDecode(t *testing.T) {
testEqual(t, "Decode(%q) = %q, want %q", p.encoded, testEqual(t, "Decode(%q) = %q, want %q", p.encoded,
string(dbuf[0:count]), string(dbuf[0:count]),
p.decoded) p.decoded)
dbuf, err = StdEncoding.DecodeString(p.encoded)
testEqual(t, "DecodeString(%q) = error %v, want %v", p.encoded, err, error(nil))
testEqual(t, "DecodeString(%q) = %q, want %q", string(dbuf), p.decoded)
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment