6

C# で次の状況を処理する最善の方法は何ですか?

C/C++ で書かれたサーバー アプリケーションがあります。

たとえばunsigned char、 length のバッファを作成し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;
}

これらのアートに期待されるバイトを処理するためのより良い方法はありますか? 本質的なものが見えていませんか?

4

2 に答える 2