乐趣区

golang基础学习base64使用

在近期的项目开发中对图片进行 base64 编码,简单使用了 golang 的 base64 包。

1. 使用方法

1.1 引入包

import "encoding/base64"

1.2 base64 使用

这里所有的例子都是官网上的范例;
code:

msg := "Hello, 世界"
encoded := base64.StdEncoding.EncodeToString([]byte(msg))
fmt.Println(encoded)
decoded, err := base64.StdEncoding.DecodeString(encoded)
if err != nil {fmt.Println("decode error:", err)
    return
}
fmt.Println(string(decoded))

Output:

SGVsbG8sIOS4lueVjA==
Hello, 世界 

2. 包详解

2.1 包详解

bash64 包详解

上面途中的 Constants:

const (
    StdPadding rune = '=' // Standard padding character
    NoPadding  rune = -1  // No padding
)

上面途中的 Variables:

var RawStdEncoding = StdEncoding.WithPadding(NoPadding)
var RawURLEncoding = URLEncoding.WithPadding(NoPadding)
var StdEncoding = NewEncoding(encodeStd) 案例中使用的是该变量
var URLEncoding = NewEncoding(encodeURL)

以 2.2 节案例中详解:

base64 加密:

  1. base64.StdEncoding 如上面变量所解释,接收了“NewEncoding(encodeStd)”返回的结果“*Encoding”;
  2. 根据返回结果 再执行 EncodeToString(str []byte) string 这个方法;
    在源码中,EncodeToString 其实执行中的方法 Encode(dst, src []byte),把结果 string 了一下。当然秉着我省事的原则,我一直比较习惯用 EncodeToString
  3. 打印“encoded := base64.StdEncoding.EncodeToString([]byte(msg))”后生成:
    SGVsbG8sIOS4lueVjA==

base64 解码:

案例中,对于解码对结果对于加密后的字符串运行:

decoded, err := base64.StdEncoding.DecodeString(encoded) 
  1. 实际中 DecodeString 实际是对的封装 func (enc *Encoding) Decode(dst, src []byte) (n int, err error),如图可见:

ps: 本文只是简单的使用 base64 包中一些函数。欢迎大家补充。

退出移动版