文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>在C#中实现类似位域的操作

在C#中实现类似位域的操作

时间:2011-01-23  来源:天方

     /// <summary>
    ///这个类主要用于那种将一个字节分成若干部分,每个部分表示一个数的类型
    /// </summary>
    class BitHelper
    {
        public static byte GetByte(byte data, byte index, byte count)
        {
            Contract.Requires(index + count <= 8);

            return (byte)((data >> (8 - index - count)) % (1 << count));
        }

        public static byte SetByte(int value, byte data, byte index, byte count)
        {
            Contract.Requires(index + count <= 8);
            Contract.Requires(value < (1 << count));

            var tail = data % (1 << (8 - index - count));
            return (byte)((((data >> (8 - index) << count) + value) << index) + tail);
        }

        //测试某一位是否为1
        public static bool TestBit(byte data, byte index)
        {
            return GetByte(data, index, 1) == 1;
        }

        public static byte SetBit(bool value, byte data, byte index)
        {
            return SetByte(value ? 1 : 0, data, index, 1);
        }
    }

这个类并不能直接用,也是辅助实现的操作,一般用于在属性中封装某个字段。

    private byte flags = 5;
    public byte Flags
    {
        get { return flags; }
        set { flags = value; }
    }

    public bool TypeFlagsAudio
    {
        get { return BitHelper.TestBit(flags, 5); }
        set { flags = BitHelper.SetBit(value, flags, 5); }
    }

    public bool TypeFlagsVideo
    {
        get { return BitHelper.TestBit(flags, 7); }
        set { flags = BitHelper.SetBit(value, flags, 7); }
    } 

相关阅读 更多 +
排行榜 更多 +
找茬脑洞的世界安卓版

找茬脑洞的世界安卓版

休闲益智 下载
滑板英雄跑酷2手游

滑板英雄跑酷2手游

休闲益智 下载
披萨对对看下载

披萨对对看下载

休闲益智 下载