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