通过76个字符将一行base64分成多行的最佳方法是什么。目前我使用encoding/base64
包作为:
encoded := base64.StdEncoding.EncodeToString(data)
提前谢谢!
答案 0 :(得分:2)
标准库中没有对此的支持。你必须自己制作一个。
一个简单的实现可以是这样的:
func split(s string, size int) []string {
ss := make([]string, 0, len(s)/size+1)
for len(s) > 0 {
if len(s) < size {
size = len(s)
}
ss, s = append(ss, s[:size]), s[size:]
}
return ss
}
这将循环直到字符串被消耗,并且在每次迭代中从头开始剪切size
个字符(字节)。
请注意,这适用于base64文本,因为它只使用以UTF-8编码形式将1对1映射到字节的字符(这是Go在内存中存储字符串的方式)。如果你想在任意字符串上使用它,切片可能会破坏有效的UTF-8序列,而且块也不一定是size
个字符。
测试它:
s := strings.Repeat("1", 2*76+3)
for _, chunk := range split(s, 76) {
fmt.Println(chunk)
}
输出(在Go Playground上尝试):
1111111111111111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111111111111111
111