读书人

问个C#位操作的有关问题

发布时间: 2013-12-05 22:27:44 作者: rapoo

问个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。

读书人网 >C#

热点推荐