比如ModbusTcp通讯返回值是198,我们需要把它转换成1、2、4、8、16、32、64..形式
public static IEnumerable<int> ReadIndex(int input)
{
var power = 0;
while (input > 0)
{
var digit = input % 2;
if (digit == 1)
{
yield return (int)Math.Pow(2, power);
}
input /= 2;
power++;
}
}
ReadIndex(198);
输出结果: