diff --git a/ICD.Common.Utils/Extensions/ByteExtensions.cs b/ICD.Common.Utils/Extensions/ByteExtensions.cs new file mode 100644 index 0000000..42d8787 --- /dev/null +++ b/ICD.Common.Utils/Extensions/ByteExtensions.cs @@ -0,0 +1,42 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Crestron.SimplSharp; + +namespace ICD.Common.Utils.Extensions +{ + public static class ByteExtensions + { + public static bool GetBit(this byte b, int n) + { + if (n > 7 || n < 0) + throw new ArgumentException(); + + return (b & (1 << n)) == (1 << n); + } + + public static byte SetBit(this byte b, int n, bool v) + { + if (v) + return SetBitOn(b, n); + return SetBitOff(b, n); + } + + public static byte SetBitOn(this byte b, int n) + { + if (n > 7 || n < 0) + throw new ArgumentException(); + + return (byte)(b | (1 << n)); + } + + public static byte SetBitOff(this byte b, int n) + { + if (n > 7 || n < 0) + throw new ArgumentException(); + + return (byte)(b & ~(1 << n)); + } + } +} \ No newline at end of file diff --git a/ICD.Common.Utils/ICD.Common.Utils_SimplSharp.csproj b/ICD.Common.Utils/ICD.Common.Utils_SimplSharp.csproj index d2ae64b..c39b3ae 100644 --- a/ICD.Common.Utils/ICD.Common.Utils_SimplSharp.csproj +++ b/ICD.Common.Utils/ICD.Common.Utils_SimplSharp.csproj @@ -84,6 +84,7 @@ +