using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; using WIDESEAWCS_Common.Attributes; namespace WIDESEAWCS_Common.Helper { public static class ConvertHelper { public static bool[] ByteToBoolArray(this byte data) { bool[] result = new bool[8]; for (int i = 0; i < 8; i++) { result[i] = (data & (1 << i)) != 0; } return result; } public static T ByteToBoolObject(this byte data) { bool[] boolArray = ByteToBoolArray(data); //Array.Reverse(boolArray); Type type = typeof(T); object? obj = Activator.CreateInstance(type); if (obj == null) { throw new Exception($"类型实例化错误"); } T result = (T)obj; PropertyInfo[] propertyInfos = type.GetProperties(); foreach (PropertyInfo propertyInfo in propertyInfos) { BoolIndexAttribute? boolIndexAttribute = propertyInfo.GetCustomAttribute(); if (boolIndexAttribute != null) { if (boolIndexAttribute.Index >= 0 && boolIndexAttribute.Index < 8) { propertyInfo.SetValue(result, boolArray[boolIndexAttribute.Index]); } } } return result; } } }