c# – 无法应用位掩码

前端之家收集整理的这篇文章主要介绍了c# – 无法应用位掩码前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在制作一个马节目.我有马脸,并希望应用一点面具.佩戴钻头面罩时,只能看到马眼.首先,我必须将马面转换为数字.为此,我有一组位,包括0,0和1的马面.

我正在使用C#并将问题分解为部分:

>将马的头部转换为数字
>为它戴上一点面具
>把位面罩放在马上
>将数字蒙面马转换回来
进入图形

在第4步,我希望只看到马眼,但我只看到“0”,这不是一个马脸.

这是我的所有代码,请不要质疑我的ASCII艺术与问题无关,除了它是原型,真正的程序将具有优越的图形.

//the head of the horse
string head = "#      #" +
              "########" +
              "#O    O#" +
              "#      #" +
              "#      #" +
              "#=    =#" +
              " #====# " +
              "  ####  ";
//digitize the horse into bits of binary
string binaryHead = head.Replace('#','0').Replace('=','0').Replace(' ','0').Replace('O','1');
long face = Convert.ToInt64(binaryHead,2);

//make a bit mask with holes for the eyes
string mask = "11111111" +
              "11111111" +
              "10111101" +
              "11111111" +
              "11111111" +
              "11111111" +
              "11111111" +
              "11111111";

//apply the bit mask using C#
long maskBits = Convert.ToInt64(mask,2);
string eyesOnly = Convert.ToString(face & maskBits,2);
//eyesOnly is "0"....WHAT??? It should be more than that. WHERE IS THE HORSE??
//It should look like this:
//              "00000000" +
//              "00000000" +
//              "01000010" +
//              "00000000" +
//              "00000000" +
//              "00000000" +
//              "00000000" +
//              "00000000";

我怀疑转换有问题,我已经尝试了各种各样的事情,比如转换为字节数组并用空格格式化字符串但没有运气.我想知道这个问题是否可能是NP难的.

解决方法

面部和眼睛只有没有共同的1位. maskBits除了眼睛外都会留下一切.交换0和1,或使用〜运算符翻转maskBits.并给它一个更好的名称,以便明确它是一个掩码:bitmaskForNotEyes.
原文链接:https://www.f2er.com/csharp/99798.html

猜你在找的C#相关文章