人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: kenokabe
●カテゴリ:コンピュータ
✍キーワード:byte C# String アレイ バイト
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● aki73ix
●30ポイント

http://winfaq.jp/

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

URLはダミーです

memcpy じゃだめなんすか?

memcpy(bytData1+offset,bytData2,length);

文字列なら

lstrcat(bytData1,bytData2);

でいけますよね


2 ● disca
●40ポイント

http://www.google.com/

Google

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#)にはなかったので…)

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


3 ● cogen
●50ポイント

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

はてな

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;


4 ● shampoohat
●20ポイント

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

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

キャストして、

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

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

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

・自分が作ったクラス

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

◎質問者からの返答

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

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

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

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

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


5 ● cogen
●50ポイント

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;

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

◎質問者からの返答

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

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ