1
将一行base64拆分为多行76个字符的最佳方法是什么?目前我使用encoding/base64
包装为:将base64行拆分为块
encoded := base64.StdEncoding.EncodeToString(data)
提前致谢!
将一行base64拆分为多行76个字符的最佳方法是什么?目前我使用encoding/base64
包装为:将base64行拆分为块
encoded := base64.StdEncoding.EncodeToString(data)
提前致谢!
在标准库中没有对此的支持。你必须自己做一个。
一个简单的实现可以是这样的:
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编码形式(这是Go如何将字符串存储在内存中)映射1对1字节的字符。如果你想在任意字符串上使用它,切片可能破坏有效的UTF-8序列,并且块也不一定是size
个字符。
测试它:
s := strings.Repeat("1", 2*76+3)
for _, chunk := range split(s, 76) {
fmt.Println(chunk)
}
输出(尝试在Go Playground):
1111111111111111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111111111111111
111
环路和切片操作'[0:76]' – zerkms