有一个长的base64字符串,必须每72字节用New Line格式化并转换为字节数组。
有:
Convert.ToBase64String(Convert.FromBase64String("..."), Base64FormattingOptions.InsertLineBreaks)
但它每76个字节插入一个新行。 我怎样才能将它转换回带有保留新行的字节数组?
答案 0 :(得分: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");
}
答案 1 :(得分: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