吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 1827|回复: 5

[C#] 【总结】位操作类

[复制链接]
Lion1505 发表于 2017-4-24 08:11 | 显示全部楼层 |阅读模式

[C#] 纯文本查看 复制代码
/// <summary>
/// 位操作类
/// </summary>
public static class BitHelper
{
	/// <summary>
	/// 获取某个位
	/// </summary>
	/// <param name="byt"></param>
	/// <param name="index"></param>
	/// <returns></returns>
	public static byte GetBit(this byte byt, int index)
	{
		return (byte)((byt >> index) & 1);
	}

	/// <summary>
	/// 获取字节的某些位
	/// </summary>
	/// <param name="byt">字节数组</param>
	/// <param name="index">起始位置</param>
	/// <param name="len">长度</param>
	/// <returns></returns>
	public static byte GetBit(this byte byt, int index, int length)
	{
		byte mask = GetMask(length);
		return (byte)((byt >> index) & mask);
	}

	/// <summary>
	/// 获取屏蔽位
	/// </summary>
	/// <param name="length"></param>
	/// <returns></returns>
	public static byte GetMask(int length)
	{
		return (byte)((1 << length) - 1);
	}

	/// <summary>
	/// 获取屏蔽位
	/// </summary>
	/// <param name="index"></param>
	/// <param name="length"></param>
	/// <returns></returns>
	public static byte GetMask(int index, int length)
	{
		byte mask = GetMask(length);
		return (byte)(mask << index);
	}

	/// <summary>
	/// 清0
	/// </summary>
	/// <param name="byt"></param>
	/// <param name="index"></param>
	public static byte ClearBit(this byte byt, int index)
	{
		return byt &= (byte)(~(1 << index));
	}

	/// <summary>
	/// 清除字节的某些位
	/// </summary>
	/// <param name="byt">字节数组</param>
	/// <param name="index">起始位置</param>
	/// <param name="len">长度</param>
	public static byte ClearBit(this byte byt, int index, int length)
	{
		byte mask = GetMask(index, length);
		return byt &= (byte)(~mask);
	}

	/// <summary>
	/// 某位置1
	/// </summary>
	/// <param name="byt"></param>
	/// <param name="index"></param>
	public static byte SetBit(this byte byt, int index)
	{
		return byt |= (byte)(1 << index);
	}

	/// <summary>
	/// 某些位置1
	/// </summary>
	/// <param name="byt"></param>
	/// <param name="index"></param>
	/// <param name="length"></param>
	public static byte SetBit(this byte byt, int index, int length)
	{
		byte mask = GetMask(index, length);
		return byt |= (byte)mask;
	}

	/// <summary>
	/// 设置字节的某些位
	/// </summary>
	/// <param name="byt">字节数组</param>
	/// <param name="index">起始位置</param>
	/// <param name="len">长度</param>
	/// <param name="value">设置值</param>
	public static byte SetBit(this byte byt, int index, int length, int value)
	{
		int mask = GetMask(length);
		byt = byt.ClearBit(index, length);
		return byt |= (byte)((value & mask) << index);
	}

	/// <summary>
	/// 取反
	/// </summary>
	/// <param name="byt"></param>
	/// <param name="index"></param>
	/// <param name="length"></param>
	public static byte ReverseBit(this byte byt, int index, int length)
	{
		byte mask = GetMask(index, length);
		return byt ^= mask;
	}

	/// <summary>
	/// 某位取反
	/// </summary>
	/// <param name="byt"></param>
	/// <param name="index"></param>
	public static byte ReverseBit(this byte byt, int index)
	{
		return byt ^= (byte)(1 << index);
	}

	/// <summary>
	/// 
	/// </summary>
	/// <param name="byt"></param>
	/// <param name="index"></param>
	/// <param name="len"></param>
	/// <returns></returns>
	public static UInt16 ClearBit(this UInt16 data, int index, int length)
	{
		int mask = (2 << length) - 1;
		return (UInt16)(data & (~(mask << index)));
	}
}

评分

参与人数 9HB +5 THX +4 收起 理由
禽大师 + 1
消逝的过去 + 1
摁住可能 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
zxjzzh + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
agan8888 + 1
pmm018 + 1
因素 + 1 [快捷评语] - 分享精神,是最值得尊敬的!
adime + 1 [快捷评语] - 分享精神,是最值得尊敬的!
乐知 + 1 [快捷评语] - 分享精神,是最值得尊敬的!

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
ps122 发表于 2017-4-24 08:28 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
乐知 发表于 2017-4-24 10:38 | 显示全部楼层

虽然不在自己范围内,手动支持下
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
adime 发表于 2017-4-25 15:45 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
因素 发表于 2017-4-30 16:54 | 显示全部楼层

分享精神必须支持!!
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
☆邪梦 发表于 2017-4-30 18:50 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

警告:本站严惩灌水回复,尊重自己从尊重他人开始!

1层
2层
3层
4层
5层
6层

免责声明

吾爱汇编(www.52hb.com)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。吾爱汇编不承担任何因为技术滥用所产生的连带责任。吾爱汇编内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@sina.com
站长QQ:1140549900


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编 ( 京公网安备11011502005403号 , 京ICP备20003498号-6 )|网站地图

Powered by Discuz!

吾爱汇编 www.52hb.com

快速回复 返回顶部 返回列表