golang基础学习-base64使用
Mr雨易 · · 761 次点击 · · 开始浏览在近期的项目开发中对图片进行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包详解
上面途中的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加密:
base64.StdEncoding 如上面变量所解释,接收了"NewEncoding(encodeStd)"返回的结果"*Encoding";
根据返回结果 再执行EncodeToString(str []byte) string 这个方法;
在源码中,EncodeToString 其实执行中的方法Encode(dst, src []byte),把结果string了一下。 当然秉着我省事的原则,我一直比较习惯用EncodeToString打印"encoded := base64.StdEncoding.EncodeToString([]byte(msg))"后生成:
SGVsbG8sIOS4lueVjA==
base64解码:
案例中,对于解码对结果对于加密后的字符串运行:
decoded, err := base64.StdEncoding.DecodeString(encoded)
- 实际中DecodeString 实际是对的封装func (enc *Encoding) Decode(dst, src []byte) (n int, err error),如图可见:
ps:本文只是简单的使用base64包中一些函数。欢迎大家补充。
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
在近期的项目开发中对图片进行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包详解
上面途中的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加密:
base64.StdEncoding 如上面变量所解释,接收了"NewEncoding(encodeStd)"返回的结果"*Encoding";
根据返回结果 再执行EncodeToString(str []byte) string 这个方法;
在源码中,EncodeToString 其实执行中的方法Encode(dst, src []byte),把结果string了一下。 当然秉着我省事的原则,我一直比较习惯用EncodeToString打印"encoded := base64.StdEncoding.EncodeToString([]byte(msg))"后生成:
SGVsbG8sIOS4lueVjA==
base64解码:
案例中,对于解码对结果对于加密后的字符串运行:
decoded, err := base64.StdEncoding.DecodeString(encoded)
- 实际中DecodeString 实际是对的封装func (enc *Encoding) Decode(dst, src []byte) (n int, err error),如图可见:
ps:本文只是简单的使用base64包中一些函数。欢迎大家补充。