3 回答
TA贡献1865条经验 获得超7个赞
并非您尝试解码的所有输入字符串都是 Base64 编码形式。
您拥有的是Data URI scheme,它提供了一种将数据内嵌在网页中的方法,就好像它们是外部资源一样。
它的格式为:
data:[<MIME-type>][;charset=<encoding>][;base64],<data>
在您的情况下image/png是 MIME 类型,缺少可选字符集,并且";base64"是一个常量字符串,指示<data>使用 Base64 编码进行编码。
要获取数据(即 Base64 编码形式),请切断逗号前的前缀(包括逗号):
input := "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYA"
b64data := input[strings.IndexByte(input, ',')+1:]
fmt.Println(b64data)
输出:
iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYA
您现在可以解码其中:
data, err := base64.StdEncoding.DecodeString(b64data)
if err != nil {
fmt.Println("error:", err)
}
fmt.Println(data)
输出:
[137 80 78 71 13 10 26 10 0 0 0 13 73 72 68 82 0 0 0 100 0 0 0 100 8 6 0]
在Go Playground上试一试。
- 3 回答
- 0 关注
- 561 浏览
添加回答
举报