C#で、

byte [] bytData1 = null;
byte [] bytData2 = null;
があるとして、この2つのバイトアレイをstringの+みたいに接続
たとえば、bytData1=bytData1+bytData2 ;
とするにはどうすれば良いですか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答5件)

id:aki73ix No.1

回答回数5224ベストアンサー獲得回数27

ポイント30pt

http://winfaq.jp/

Windows.FAQ - ウィンドウズ処方箋

URLはダミーです

memcpy じゃだめなんすか?

memcpy(bytData1+offset,bytData2,length);

文字列なら

lstrcat(bytData1,bytData2);

でいけますよね

id:disca No.2

回答回数26ベストアンサー獲得回数0

ポイント40pt

byte [] bytData1

byte [] bytData2

// なんらかの操作(配列拡張や代入)

for (i= 0 ; i < bytData1の配列長 ; i++)

bytData3[i]= bytData1[i]

for (j= 0 ; j < bytData2の配列長 ; i++, j++)

byteData[i]= bytData3[j];

C言語のmemcpy が使えるかどうかわからないので、

(MSDN(C#)にはなかったので…)

このような感じになります。

id:cogen No.3

回答回数21ベストアンサー獲得回数0

ポイント50pt

URLはダミーです。

1,2のどちらかしか思い浮かびませんでした。

もっとスマートで良い方法が間違いなくあると思うので,

他の人の回答を待って下さい。

1.

using( System.IO.MemoryStream tmp = new System.IO.MemoryStream() )

{

tmp.Write( bytData1, 0, bytData1.Length );

tmp.Write( bytData2, 0, bytData2.Length );

tmp.Seek( 0, System.IO.SeekOrigin.Begin );

bytData1 = mem.ToArray();

}

2.

byte [] bytTmp = new byte[bytData1.Length + bytData2.Length];

int i = 0;

foreach( byte x in bytData1 )

{

bytTmp[i++] = x;

}

foreach( byte x in bytData2 )

{

bytTmp[i++] = x;

}

bytData1 = bytTmp;

id:shampoohat No.4

回答回数347ベストアンサー獲得回数0

ポイント20pt

http://www.microsoft.com/japan/msdn/library/default.asp?url=/jap...

ご指定のページが見つかりません

キャストして、

bytData1 = (byte[]) ((String)bytData1 + (String)bytData2);

とかじゃだめなんですよね??

演算子の振る舞いを変更するには演算子オーバーロードをしないとだめなのですすが、

・自分が作ったクラス

じゃないと、演算子の振る舞いの変更は出来ません。byteはクラスでないし、自分が作ったものでもないので、無理です。

id:kenokabe

1-4の方ありがとうございます。

質問がまぎらわしいなと後で思ったのですが、

どういう処理をしたいのか例示するためにそういう表記になってしまったので、別に演算子オーバーライドの事は関係ないです。

ちなみにbyte[]は(string)でキャストできません。

質問にC#と限定しているので(そのための質問なので)、できれば2と3の方のようにC#、NETの環境で一番スマートなやり方をお聞きしたいものです。

2004/03/05 11:24:39
id:cogen No.5

回答回数21ベストアンサー獲得回数0

ポイント50pt

http://www.hatena.ne.jp/1078363787

C#で、 byte [] bytData1 = null; byte [] bytData2 = null; があるとして、この2つのバイトアレイをstringの+みたいに接続 たとえば、bytData1=bytData1+bytData2 ; と.. - 人力検索はてな

URLはダミー。

昨日の回答がいまいちだったので,もう少し調べてみました。

byte [] bytTmp = new byte[bytData1.Length + bytData2.Length];

bytData1.CopyTo( bytTmp, 0 );

bytData2.CopyTo( bytTmp, bytData1.Length );

bytData1 = bytTmp;

少しはスマートになっかと。

id:kenokabe

そうですね。私もここの回答からヒントを得て、

バイトは配列なのでその要素をコピーするCOPYTOメソッドを使えばよいと気づきやって解決しました。一度試していたのですが、そのときはきちんと配列の要素数を確保していないのでエラーで、よく理解していないためにあきらめていました。

結局すべて解決しました。ありがとうございます。

2004/03/06 08:39:54

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません