不能将异或结果赋值给BitArray类型变量.如何修复此代码
本文关键字:类型变量 何修复 代码 BitArray 结果 赋值 不能 | 更新日期: 2023-09-27 17:50:52
我试图对像素的蓝色字节的两个lsb进行异或,并将结果存储在BitArray变量的索引中,但c#给了我
的类型转换错误不能隐式地将"int"类型转换为"bool"类型
我知道c#将异或操作视为int
,但我无法修复此代码。有什么办法解决这个问题吗?
Bitmap img = new Bitmap(fname);
BitArray cipherBits = new BitArray(cipherStringSize * sizeof(Char) * 8);
int cipherBitCounter = 0;
Color pixel;
byte[] cipherByte = new byte[cipherBits.Length/8];
for (int i = 0; i < img.Height; i++)
{
for (int j = 0; j < img.Width; j++)
{
if (cipherBitCounter <= cipherBits.Length)
{
pixel = img.GetPixel(i, j);
cipherBits[cipherBitCounter] = ((pixel.B >> 1) & 1) ^ ((pixel.B) & 1); //error here
cipherBitCounter++;
}
else
{
//do something else
}
}
你可以比较1:
cipherBits[cipherBitCounter] =( ((pixel.B >> 1) & 1) ^ ((pixel.B) & 1) ) == 1; //error here
但是使用Convert可能更好。ToBoolean:
https://msdn.microsoft.com/en-us/library/system.convert.toboolean%28v=vs.110%29.aspxcipherBits[cipherBitCounter] = Convert.ToBoolean( ((pixel.B >> 1) & 1) ^ ((pixel.B) & 1) ); //error here