C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ArrayCopyの使い方について教えてください。


(過去ログ 3 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■3655 / inTopicNo.1)  ArrayCopyの使い方について教えてください。
  
□投稿者/ あらら 二等兵(14回)-(2006/05/18(Thu) 10:01:48)

分類:[C#] 


分類:[C#] 

お世話になっております。

下記の様な場合に配列の長さは変えないで、配列同士をつなげたいのですが、
どのようにすればよいでしょうか?

-------------------
char[] charArray1 = ("test").ToCharArray();
int size = 100;

byte[] byteArray1 = new byte[256];
byteArray1 = System.Text.Encoding.GetEncoding("shift-jis").GetBytes(charArray1);

byte[] byteArray2 = new byte[4];
byteArray2 = BitConverter.GetBytes(size);

byte[] byteArray3 = new byte[260];
Array.Copy(byteArray1, 0, byteArray3, 0, 256);
// ↑ここで「ソース配列の長さが足りません。srcIdex、長さおよび配列の最小値を
//  確認してください」の例外が発生します。
Array.Copy(byteArray2, 0, byteArray3, 256, 4);


0
引用返信 編集キー/
■3656 / inTopicNo.2)  Re[1]: ArrayCopyの使い方について教えてください。
□投稿者/ まどか 少尉(130回)-(2006/05/18(Thu) 10:20:04)

分類:[C#] 

> byte[] byteArray1 = new byte[256];
> byteArray1 = System.Text.Encoding.GetEncoding("shift-jis").GetBytes(charArray1);
>
> Array.Copy(byteArray1, 0, byteArray3, 0, 256);
> // ↑ここで「ソース配列の長さが足りません。srcIdex、長さおよび配列の最小値を
> //  確認してください」の例外が発生します。

GetBytesは結果の配列を「作成」して返しますので、渡した文字列の長さ分しか返りません。
したがってbyteArray1は要素を確保する必要は無く宣言のみでOKです。
その後のCopyメソッドでは固定値ではなく返ってきた長さを指定することになります。

0
引用返信 編集キー/
■3660 / inTopicNo.3)  Re[2]: ArrayCopyの使い方について教えてください。
□投稿者/ あらら 二等兵(15回)-(2006/05/18(Thu) 10:44:15)

分類:[C#] 

まどかさん、返信ありがとうございます。

教えて頂いたように、下記のようにしたら、解決しました。
ありがとうございます。
-------------------
char[] charArray1 = ("test").ToCharArray();
int size = 100;

byte[] byteArray1 = System.Text.Encoding.GetEncoding("shift-jis").GetBytes(charArray1);
byte[] byteArray2 = BitConverter.GetBytes(size);

byte[] byteArray3 = new byte[260];
Array.Copy(byteArray1, 0, byteArray3, 0, byteArray1.Length);
Array.Copy(byteArray2, 0, byteArray3, 256, byteArray2.Length);


解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -