diff --git a/base16.go b/base16.go new file mode 100644 index 0000000..ac8c819 --- /dev/null +++ b/base16.go @@ -0,0 +1,21 @@ +package multibase + +func hexEncodeToStringUpper(src []byte) string { + dst := make([]byte, len(src)*2) + hexEncodeUpper(dst, src) + return string(dst) +} + +var hextableUpper = [16]byte{ + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + 'A', 'B', 'C', 'D', 'E', 'F', +} + +func hexEncodeUpper(dst, src []byte) int { + for i, v := range src { + dst[i*2] = hextableUpper[v>>4] + dst[i*2+1] = hextableUpper[v&0x0f] + } + + return len(src) * 2 +} diff --git a/base32.go b/base32.go new file mode 100644 index 0000000..dffcfae --- /dev/null +++ b/base32.go @@ -0,0 +1,17 @@ +package multibase + +import ( + b32 "github.com/whyrusleeping/base32" +) + +var base32StdLowerPad = b32.NewEncodingCI("abcdefghijklmnopqrstuvwxyz234567") +var base32StdLowerNoPad = base32StdLowerPad.WithPadding(b32.NoPadding) + +var base32StdUpperPad = b32.NewEncodingCI("ABCDEFGHIJKLMNOPQRSTUVWXYZ234567") +var base32StdUpperNoPad = base32StdUpperPad.WithPadding(b32.NoPadding) + +var base32HexLowerPad = b32.NewEncodingCI("0123456789abcdefghijklmnopqrstuv") +var base32HexLowerNoPad = base32HexLowerPad.WithPadding(b32.NoPadding) + +var base32HexUpperPad = b32.NewEncodingCI("0123456789ABCDEFGHIJKLMNOPQRSTUV") +var base32HexUpperNoPad = base32HexUpperPad.WithPadding(b32.NoPadding) diff --git a/multibase.go b/multibase.go index 24a4bd2..5f5b58d 100644 --- a/multibase.go +++ b/multibase.go @@ -133,36 +133,3 @@ func Decode(data string) (Encoding, []byte, error) { return -1, nil, ErrUnsupportedEncoding } } - -var base32StdLowerPad = b32.NewEncodingCI("abcdefghijklmnopqrstuvwxyz234567") -var base32StdLowerNoPad = base32StdLowerPad.WithPadding(b32.NoPadding) - -var base32StdUpperPad = b32.NewEncodingCI("ABCDEFGHIJKLMNOPQRSTUVWXYZ234567") -var base32StdUpperNoPad = base32StdUpperPad.WithPadding(b32.NoPadding) - -var base32HexLowerPad = b32.NewEncodingCI("0123456789abcdefghijklmnopqrstuv") -var base32HexLowerNoPad = base32HexLowerPad.WithPadding(b32.NoPadding) - -var base32HexUpperPad = b32.NewEncodingCI("0123456789ABCDEFGHIJKLMNOPQRSTUV") -var base32HexUpperNoPad = base32HexUpperPad.WithPadding(b32.NoPadding) - - -func hexEncodeToStringUpper(src []byte) string { - dst := make([]byte, len(src) * 2) - hexEncodeUpper(dst, src) - return string(dst) -} - -var hextableUpper = [16]byte{ - '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', - 'A', 'B', 'C', 'D', 'E', 'F', -} - -func hexEncodeUpper(dst, src []byte) int { - for i, v := range src { - dst[i*2] = hextableUpper[v>>4] - dst[i*2+1] = hextableUpper[v&0x0f] - } - - return len(src) * 2 -}