在C#中以更优雅的方式将位存储在字节中?

时间:2018-08-23 17:22:17

标签: c# bit-manipulation

我想在C#的字节变量中使用5个布尔值。我想出了下面的代码,效果很好,但是很丑。

byte myDataMask = 0;
if (isOne) myDataMask |= 1;
if (isTwo) myDataMask |= 2;
if (isFour) myDataMask |= 4;
if (isEight) myDataMask |= 8;
if (isSixteen) myDataMask |= 16;

是否存在更好,更优雅,更短的表达方式?

1 个答案:

答案 0 :(得分:1)

枚举怎么样:

        public enum Mask
        {
            IS_NONE = 0,
            IS_ONE = 1,
            IS_TWO = 2,
            IS_FOUR = 4,
            IS_EIGHT = 8,
            IS_SIXTEEN = 16
        }
        private static void Main()
        {

            byte data = 0x04;

            switch ((Mask)data)
            {
                case Mask.IS_NONE :
                    break;

                case Mask.IS_ONE :
                    break;
                case Mask.IS_TWO :
                    break;
                case Mask.IS_FOUR :
                    break;
                case Mask.IS_EIGHT :
                    break;
                case Mask.IS_SIXTEEN :
                    break;


            }


        }