forked from zxl/LaboratoryProtection
79 lines
2.3 KiB
C#
79 lines
2.3 KiB
C#
namespace PMaker.Extension
|
|
{
|
|
public static class IntExtension
|
|
{
|
|
/// <summary>
|
|
/// 判断是否在指定范围内
|
|
/// </summary>
|
|
/// <param name="value"></param>
|
|
/// <param name="min">最小值</param>
|
|
/// <param name="max">最大值</param>
|
|
/// <returns></returns>
|
|
public static bool IsClamp(this int value, int min, int max)
|
|
{
|
|
return value <= max & value >= min;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 某一范围内循环自增
|
|
/// </summary>
|
|
/// <param name="value"></param>
|
|
/// <param name="max"></param>
|
|
/// <param name="min"></param>
|
|
public static void CyclicAdd(ref this int value, int max, int min = 0)
|
|
{
|
|
value = (value - min + 1) % max + min;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 某一范围内循环自减
|
|
/// </summary>
|
|
/// <param name="value"></param>
|
|
/// <param name="max"></param>
|
|
/// <param name="min"></param>
|
|
public static void CyclicSub(ref this int value, int max, int min = 0)
|
|
{
|
|
value = (value - min + max - 1) % max + min;
|
|
}
|
|
//public static int CyclicAdd(this int value, int max, int min = 0)
|
|
//{
|
|
// return (value - min + 1) % max + min;
|
|
//}
|
|
//public static int CyclicSub(this int value, int max, int min = 0)
|
|
//{
|
|
// return (value - min + max - 1) % max + min;
|
|
//}
|
|
|
|
/// <summary>
|
|
/// 设置指定bit位为1
|
|
/// </summary>
|
|
/// <param name="value"></param>
|
|
/// <param name="index">0base</param>
|
|
public static void BitOn(ref this int value, int index)
|
|
{
|
|
value |= (1 << index);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 设置指定bit位为0
|
|
/// </summary>
|
|
/// <param name="value"></param>
|
|
/// <param name="index">0base</param>
|
|
public static void BitOff(ref this int value, int index)
|
|
{
|
|
value &= ~(1 << index);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 判断是否包含目标值
|
|
/// </summary>
|
|
/// <param name="value"></param>
|
|
/// <param name="target"></param>
|
|
/// <returns></returns>
|
|
public static bool BitIs(this int value, int target)
|
|
{
|
|
return (value & target) == target;
|
|
}
|
|
}
|
|
}
|