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

这有一个问题:当 for 循环开始时,“end”语句 ( sb.Length) 只被评估一次。例如,如果字符串长度为 656 个字符,VB 只会将其拆分为 8 行,即使在添加 CRLF 之后,它应该是 9 行。这使得最后一行比其他行更长。对于一个非常大的物体,这可能非常重要。

显然,该Do While语句的行为符合预期,随着字符串变长,在每次迭代中重新计算“while”条件:

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