获取和设置byte中某一位的值
代码如下:
/// <summary>
/// 设置字节的某一位的值(将该位设置成0或1)
/// </summary>
/// <param name="data"></param>
/// <param name="index">右到左为 0-7</param>
/// <param name="value"></param>
/// <returns></returns>
public static byte SetBitInByte(byte data, int index, bool value)
{
index = index + 1;
if (index >8 || index < 1)
throw new ArgumentOutOfRangeException();
int v = index < 2 ? index : (2 << (index - 2));
return value ? (byte)(data | v) : (byte)(data & ~v);
}
/// <summary>
/// 获取字节中某一位的值
/// </summary>
/// <param name="data"></param>
/// <param name="index">右到左为 0-7</param>
/// <returns></returns>
public static bool GetBitInByte(byte data,int index)
{
return (data & (byte)Math.Pow(2, index)) > 0 ? true : false;
}