相当于StringBuilder's的字节插入方法

本文关键字:字节 插入 方法 StringBuilder 相当于 | 更新日期: 2023-09-27 18:05:15

是否有一些等效的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;
}

谢谢你的帮助,

艾凡

相当于StringBuilder's的字节插入方法

使用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()

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

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

根据定义,"流"只能单向流动。一旦事情发生,就没有办法改变了。如果您想要这种功能,您必须创建某种类型的常规内存集合,以便在尝试将数据推出到流之前为自己提供一个可以修改的缓冲区。

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

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

或:

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

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