[英]C# .NET How to convert StringBuilder to Byte array without using StringBuilder.ToString()
When using StringBuilder.ToString(),I'm getting an OutOfMemory exception. 当使用StringBuilder.ToString()时,我遇到了OutOfMemory异常。 Because my string needs a lot of space. 因为我的琴弦需要很多空间。 That is why i need a way (by streaming maybe) to make it work. 这就是为什么我需要一种方法(也许通过流媒体)来使其工作。
This is my code: 这是我的代码:
public static byte[] StringBuilderToByteArray(StringBuilder sb)
{
System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
byte[] byteArrToReturn = new byte[sb.Length];
int CHUNK_STRING_LENGTH = 30000;
byte[] byteArr;
int j=0;
while (sb.Length > CHUNK_STRING_LENGTH)
{
byteArr = encoding.GetBytes(sb.ToString(0, CHUNK_STRING_LENGTH));
sb.Remove(0, CHUNK_STRING_LENGTH);
for(int i=0; i< CHUNK_STRING_LENGTH; i++, j++){
byteArrToReturn[j] = byteArr[i];
}
}
byteArr = encoding.GetBytes(sb.ToString());
for (int i = 0; i < sb.Length; i++, j++)
{
byteArrToReturn[j] = byteArr[i];
}
return byteArrToReturn;
}
Is there a better way to do it? 有更好的方法吗? (streamer?) Please give answers with code examples. (流光?)请提供示例代码的答案。
Thanks. 谢谢。
You can use CopyTo
method of StringBuilder
您可以使用StringBuilder
CopyTo
方法
StringBuilder src = new StringBuilder("Hello!");
char[] dest = new char[src.Length];
src.CopyTo(0, dest, 0, src.Length);
Console.WriteLine(dest); //prints Hello!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.