由于某种原因,不能将 XOR 运算符与两个字符一起使用,有人明白为什么吗?



是否有一些正式标准不允许在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);

错误不在于函数,而在于它的结果。

当您执行input[i] ^ SN;时,您的结果是一个int,您"无法将类型‘int’隐式转换为‘char’。"

你可以这样投:

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

xor运算符(以及其他运算符)返回一个整数结果。因此,对char进行一次强制转换就足够了。

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

在这种情况下,您不必进行投射,但在您的情况下效率较低:

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

如果你有一个字符,一个char,你可以把它转换成一个整数,一个int。

然后你可以使用^运算符对其执行XOR。你现在似乎没有使用该运算符,这可能是问题的根源。

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

最新更新