有一些长的 base64 字符串,必须每 72 个字节用换行符格式化并转换为字节数组。
有:
Convert.ToBase64String(Convert.FromBase64String("..."), Base64FormattingOptions.InsertLineBreaks)
但它每 76 个字节插入新行。以及如何将其转换回保留新行的字节数组?
有一些长的 base64 字符串,必须每 72 个字节用换行符格式化并转换为字节数组。
有:
Convert.ToBase64String(Convert.FromBase64String("..."), Base64FormattingOptions.InsertLineBreaks)
但它每 76 个字节插入新行。以及如何将其转换回保留新行的字节数组?
在循环中设置字符串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");
}
如果其他人想在 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