简体   繁体   English

C#.NET如何不使用StringBuilder.ToString()将StringBuilder转换为Byte数组

[英]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.

相关问题 C#列表框无法读取StringBuilder.ToString() - C# Listbox cant read StringBuilder.ToString() StringBuilder.ToString() 抛出 OutOfMemoryException - StringBuilder.ToString() throws OutOfMemoryException 在 while 循环中调用 StringBuilder.ToString() 调试 .NET 内存泄漏 - Debugging .NET Memory leak calling StringBuilder.ToString() inside while loop Unity StringBuilder.ToString() 会导致堆内存分配吗? - Unity Does StringBuilder.ToString() cause the heap memory allocating? 为什么WPF Presentation库在StringBuilder.ToString()中包装字符串? - Why does the WPF Presentation library wrap strings in StringBuilder.ToString()? ---- s在StringBuilder.ToString()上下文中是什么意思? - What does ----s mean in the context of StringBuilder.ToString()? 隐式和显式 StringBuilder.ToString() 方法调用之间有什么区别? - What is the difference between implicit and explicit StringBuilder.ToString() method calls? StringBuilder.ToString()在字符串的开头和结尾添加“ \\”字符 - StringBuilder.ToString() is adding '\' characters in the beginning and ending of the string Stringbuilder.ToString()在javascript中转换“和”符号生成“和” - Stringbuilder.ToString() Converting " and ' symbol generate &#39; and &quot; in javascript StringBuilder.ToString()抛出&#39;索引超出范围&#39;异常 - StringBuilder.ToString() throw an 'Index out of range' Exception
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM