2017-07-31 13 views
1

1行のbase64を複数の行に76文字に分割する最適な方法は何ですか?現在、私はパッケージをこのように使用しています:ベース64行をチャンクに分割

encoded := base64.StdEncoding.EncodeToString(data) 

ありがとうございます!

+0

ループ及び動作をスライス '[0:76]' – zerkms

答えて

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文字(バイト)の各反復カットに。

これは、UTF-8でエンコードされた形式(メモリ内に文字列を格納する方法)で1対1から1対1にマッピングする文字のみを使用するため、これがbase64のテキストで機能することに注意してください。これを任意の文字列で使用したい場合は、スライスが有効なUTF-8シーケンスを破る可能性があります。また、チャンクは必ずしもsize文字である必要はありません。

テストその:

s := strings.Repeat("1", 2*76+3) 
for _, chunk := range split(s, 76) { 
    fmt.Println(chunk) 
} 

出力(Go Playgroundでそれを試してください):

1111111111111111111111111111111111111111111111111111111111111111111111111111 
1111111111111111111111111111111111111111111111111111111111111111111111111111 
111 
関連する問題