美文网首页
golang基础学习-base64使用

golang基础学习-base64使用

作者: Mr雨易 | 来源:发表于2020-06-12 00:54 被阅读0次

    在近期的项目开发中对图片进行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包详解

    3207029978-5d5d093b88bc0_articlex.png

    上面途中的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==

    2391807613-5d5d0b176a203_articlex.png

    base64解码:

    案例中,对于解码对结果对于加密后的字符串运行:
    decoded, err := base64.StdEncoding.DecodeString(encoded)

    1. 实际中DecodeString 实际是对的封装func (enc *Encoding) Decode(dst, src []byte) (n int, err error),如图可见:
    384540292-5d5d0cdc6e52b_articlex.png

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

    相关文章

      网友评论

          本文标题:golang基础学习-base64使用

          本文链接:https://www.haomeiwen.com/subject/jluwtktx.html