1

長いbase64文字列があります。これは、72バイトごとに改行でフォーマットし、バイト配列に変換する必要があります。

もつ:

Convert.ToBase64String(Convert.FromBase64String("..."), Base64FormattingOptions.InsertLineBreaks)

ただし、76バイトごとに新しい行が挿入されます。そして、どうすればそれを保存された新しい行を持つバイト配列に戻すことができますか?

4

2 に答える 2

1

文字列を設定し、ループ内のStringBuilderメソッドを使用しますInsert()

var sb = new StringBuilder("the string");
for (int i = 72; i < sb.Length; i+=74)//72 + "\r\n"
{
    sb.Insert(i, "\r\n");
}
于 2012-11-23T16:07:32.970 に答える
0

他の誰かが VB でこれを行いたい場合に備えて... @burning_LEGION の分割ループを次のように VB.NET に変換しました。

For i = 72 To sb.Length Step 74
    sb.Insert(i, vbCrLf)
Next

これには問題があります。「終了」ステートメント ( sb.Length) は、for ループの開始時に一度だけ評価されます。たとえば、文字列の長さが 656 文字の場合、CRLF を追加すると 9 行になるはずですが、VB はそれを 8 行にしか分割しません。これにより、最後の行が残りの行よりも長くなります。非常に大きなオブジェクトの場合、これは非常に重要です。

Do While文字列が長くなるにつれて、反復ごとに「while」条件を再計算して、ステートメントが意図したとおりに動作するようです。

i = 72
Do While i < sb.Length
    sb.Insert(i, vbCrLf)
    i += 74
Loop
于 2016-01-27T01:06:04.140 に答える