输入字节68处的base64数据非法

don*_*lei 1 base64 decode go

我得到:错误:在将base64_edcode字符串传递到base64.StdEncoding.DecodeString(str)中时,输入字节68处的base64数据非法。

字符串是:

TbHl6ijhdKwXklzOkw5+/r5Yac0kED8Iyp/7suphsFLHSJAUGM8vZHeroTeJ9eF4PePO5A
Run Code Online (Sandbox Code Playgroud)

但将字符串放入php base64_decoed中就可以了,结果是0000000000bd583f958a7018c9 [11,“ string”,8641231,1111]

为什么?

Fli*_*mzy 7

因为它不是有效的Base 64字符串。它缺少尾部填充。使用适当的填充:

TbHl6ijhdKwXklzOkw5+/r5Yac0kED8Iyp/7suphsFLHSJAUGM8vZHeroTeJ9eF4PePO5A==
Run Code Online (Sandbox Code Playgroud)

它有效,或者您可以告诉解码器不要寻找填充

    out, err := base64.StdEncoding.WithPadding(base64.NoPadding).DecodeString(str)
Run Code Online (Sandbox Code Playgroud)