不能将异或结果赋值给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
                    }
                }

不能将异或结果赋值给BitArray类型变量.如何修复此代码

你可以比较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.aspx

cipherBits[cipherBitCounter] = Convert.ToBoolean( ((pixel.B >> 1) & 1) ^ ((pixel.B) & 1) ); //error here