2011-08-09 6 views
0

バイト配列で使用するStringBuilder.Insertメソッドに相当するものはありますか?私はMemoryStreamを試してみるつもりでしたが、MemoryStreamオブジェクトが "展開不可"であるというエラーがスローされました。私は別の(すでに存在するバイト配列)の特定の場所にバイトを配置する必要があります。C#ByteのStringBuilderのInsertメソッドと同等

ここでは、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; 

} 

エヴァン

答えて

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

バイトの配列とは対照的に、バイトのリストを使用して、そこに挿入メソッドを使用できます。

+0

あなたは正しいですか?これは私が探していたものです - ありがとう! –

0

あなたはListを使用してみました、それはInsertメソッド定義によって

0

A「ストリーム」一方向にしか流れています。一度それがゲートから流出すると、何かを変更する方法はありません。この能力が必要な場合は、データをストリームにプッシュしようとする前に変更できるバッファを提供するために、ある種の通常のインメモリコレクションを作成する必要があります。

0

あなたはバイトではなく、いくつかのコレクションを作成するバイト配列、作成することができます。

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

か:

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

使用ASCIIまたはUTF8またはその他の会話を。