gpt4 book ai didi

go - 使用 base64.StdEncoding.DecodeString(str) 时输入字节 4 处的非法 base64 数据

转载 作者:IT王子 更新时间:2023-10-29 01:22:17 28 4
gpt4 key购买 nike

我收到:错误:输入字节 4 处有非法 base64 数据

当将 Base64Image 传入 base64.StdEncoding.DecodeString(str) 时:

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYA... 

如果您需要完整的 base64,请告诉我,我刚刚粘贴了第一部分,因为看起来问题在 4 个字节以内?

data, errBase := base64.StdEncoding.DecodeString(Base64Image)
if errBase != nil {
fmt.Println("error:", errBase)
return false
}

你知道为什么吗?

最佳答案

并非您尝试解码的所有输入字符串都是 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 上试试.

关于go - 使用 base64.StdEncoding.DecodeString(str) 时输入字节 4 处的非法 base64 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31031589/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com