C#.NET如何在不使用StringBuilder.ToString()的情况下将StringBuilder转换为字节数组

C#.NET如何在不使用StringBuilder.ToString()的情况下将StringBuilder转换为字节数组,c#,asp.net,.net,stringbuilder,C#,Asp.net,.net,Stringbuilder,使用StringBuilder.ToString()时,我得到一个OutOfMemory异常。 因为我的绳子需要很大的空间。 这就是为什么我需要一种方法(可能通过流媒体)来让它工作 这是我的代码: public static byte[] StringBuilderToByteArray(StringBuilder sb) { System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding(); byte[] by

使用StringBuilder.ToString()时,我得到一个OutOfMemory异常。 因为我的绳子需要很大的空间。 这就是为什么我需要一种方法(可能通过流媒体)来让它工作

这是我的代码:

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;
}
公共静态字节[]StringBuilderToByteArray(StringBuilder sb)
{
System.Text.UTF8Encoding encoding=新的System.Text.UTF8Encoding();
byte[]byteArrToReturn=新字节[sb.长度];
int CHUNK_STRING_LENGTH=30000;
字节[]byteArr;
int j=0;
while(sb.Length>CHUNK\u STRING\u Length)
{
byteArr=encoding.GetBytes(sb.ToString(0,CHUNK\u STRING\u LENGTH));
sb.删除(0,块\字符串\长度);
对于(int i=0;i
有更好的方法吗?(拖缆?) 请用代码示例给出答案


谢谢。

您可以使用
StringBuilder

StringBuilder src = new StringBuilder("Hello!");

char[] dest = new char[src.Length]; 
src.CopyTo(0, dest, 0, src.Length);

Console.WriteLine(dest); //prints Hello!

您使用的是字符数组,而不是字节数组。