C#相当于StringBuilder的Bytes插入方法

时间:2011-08-09 18:32:03

标签: c# stringbuilder memorystream

是否有一些等效的StringBuilder.Insert方法用于字节数组?我打算尝试使用MemoryStream,但是抛出一个错误告诉我MemoryStream对象“不可扩展”。我需要将字节放在另一个(已存在的字节数组)的特定位置。

这是使用StringBuilder的相同想法。

String firstString = "FirstData";
String someString = "string Data";
int Index = 0;

StringBuilder sb = new StringBuilder(firstString);

for(int i = 0; i < someString.Length; i++)
{
   sb.Insert(index, someString[i]);
   index += 2;

}

感谢您的帮助,

埃文

5 个答案:

答案 0 :(得分:3)

使用List;这将允许您根据需要插入。如果您有现有阵列,可以拨打ToList()

List<byte> data1 = new List<byte>() {10, 11, 12};
List<byte> data2 = new List<byte>() {13, 14, 15};
int Index = 0;

for(int i = 0; i < data1.Count; i++)
{
   data2.Insert(index, data2[i]);
   index += 2;
}

然后返回数组只需拨打ToArray()

答案 1 :(得分:1)

您可以使用字节列表而不是字节数组,并在那里使用insert方法。

答案 2 :(得分:0)

您是否尝试使用List,它有一个Insert方法

答案 3 :(得分:0)

根据定义,“流”仅以一种方式流动。一旦它流出大门,就无法改变某些东西。如果你想要这种能力,你必须创建一种常规的内存集合,以便在尝试将数据推送到流之前给自己一个缓冲区。

答案 4 :(得分:0)

您可以创建一个字节数组,而不是创建一些字节集合:

System.Text.ASCIIEncoding  encoding=new System.Text.ASCIIEncoding();
Byte[] bytes = encoding.GetBytes("yourString");

或:

byte[] utf8 = System.Text.Encoding.UTF8.GetBytes ("yourString");

使用ASCII或UTF8或任何其他对话。