问个C#位操作的问题
写个程序,用网端接收字符信息,由于是经过简单的加密信息(简单的与或操作),由于加密端是用C++写的,C++ char 是八位的,所以C#下面我是用byte[]来接收数据,然后通过反与操作,得到明文。现在C#的雨操作出现无法隐式转换的问题。
public byte[] getEncData(string data,byte key)
{
byte[] byteArray = Encoding.GetEncoding("GB2312").GetBytes(data);
byte[] temp[]=new byte[50];
foreach(byte b in byteArray)
{
temp[i] =b^key;//这里错误提示不能将ini隐式转换为byte,两个是byte的编译器怎么搞出个ini?
}
return temp;
}
该怎么搞
------解决方案-------------------- temp[i] =
(byte)(b^key);
------解决方案--------------------两个byte进行计算非常可能溢出,所以C#的两个byte计算之后都是返回int
------解决方案--------------------按位与 (&)、或 (
------解决方案--------------------) 非 XOR (^) 运算符
如果一个操作数是后期绑定的变量或者两个操作数均是常值数据,则将两个操作数被强制为 int (System.Int32),然后执行运算,返回的值为 int。