3

2文字のC#で^またはXOR関数を使用することを許可しない正式な標準はありますか?

    public char[] XORinput(char[] input, char SN)
    {
        int InputSize = input.Length;
        //initialize an output array
        char[] output = new char[InputSize];

        for (int i = 0; i < InputSize; i++)
        {

            output[i] = input[i] ^ SN;

        }


        return output;

    }

このコードが原因でこのエラーが発生した場合、エラー1400はタイプ'int'を'char'に暗黙的に変換できません。明示的な変換が存在します(キャストがありませんか?)

これは意味がありません。

発信者:

                string num = "12345";
                char SN = Convert.ToChar(num);//serial number

                string sCommand = ("Hellow");

                char[] out = new char[sCommand.ToCharArray().Length];


                out = calculator.XORinput(sCommand.ToCharArray(), SN);
4

3 に答える 3

7

エラーは関数ではなく、その結果にあります。

input[i] ^ SN;結果はintであり、「型'int'を'char'に暗黙的に変換することはできません。

次のようにキャストできます。

(char)(input[i] ^ SN);
于 2012-07-19T18:11:36.440 に答える
4

xor演算子(および他の演算子)は整数の結果を返します。したがって、charへのキャストは1回で十分です。

output[i] = (char)(input[i] ^ SN);

この場合、キャストする必要はありませんが、次の場合は効率が低下します。

output[i] = input[i];
output[i] ^= SN;
于 2012-07-19T18:14:09.497 に答える
1

文字、charがある場合は、それを整数、intに変換できます。

次に、^演算子を使用してXORを実行できます。現在、その演算子を使用していないようです。これが問題の原因である可能性があります。

    output[i] = (char)((uint)input[i] ^ (uint)SN);
于 2012-07-19T18:11:16.780 に答える