C#で以下の状況を処理する最善の方法は何ですか?C#Array.ValueはC++で作成された配列と異なります
私はC/C++で書かれたサーバーアプリケーションを持っています。
たとえば、 unsigned char
バッファー(長さは256
)を作成します。 このバッファには、クライアントが送信するデータが格納されます。格納後、受信したバッファには暗号検査がいくつかあります。
私はこのサーバーのクライアントをC#で書いています。
問題は、私は暗号化チェックが失敗しているコンテンツ256の全長とbyte[]
アレイを作成する場合、サーバは256
の固定長で期待されるバッファです。
私が知った理由は簡単です。サーバーは、256バイトのバッファーが必要です。例えば、メッセージが"Hello World"
である場合、残りのバッファは0パディングされなければならない。 または、説明してください:バイトは(unsigned) "204"
または(signed) "-52"
である必要があります。
これはC/C++の概念の問題/問題だと思います。
私の問題を解決するために、私はその値を明示的に設定しています。
public static byte[] GetCBuffer(this byte[] data, int len)
{
byte[] tmp = new byte[len];
for(int i = 0; i < len; i++)
if(i < data.Length)
tmp[i] = data[i];
else
tmp[i] = 204;
return tmp;
}
これらのアートに期待されるバイトを使用するより良い方法はありますか?私は何か不可欠なものを見ていないのですか?
バイト配列を特定の値にデフォルトのnull以外の_Initializeにこの[回答](http://stackoverflow.com/a/6150310/2145211)に基づいて?_私はあなたのソリューションは良いと言うでしょう。 – Harrison
私はさらに一般化して "ブランク"の値を渡すので、値が204以外の値であれば、再利用することができます。 –