设备将其限位开关的状态报告为一系列一个零(表示包含“010111110000”的字符串)。这些开关的理想表示形式是这样的标志枚举:
[Flags]
public enum SwitchStatus
{
xMin,
xMax,
yMin,
yMax,
aMax,
bMax,
cMax,
unknown4,
unknown3,
unknown2,
unknown1,
unknown0
}
是否可以将字符串表示形式转换为枚举?如果是,怎么做?
最佳答案
您可以使用Convert.ToInt64(value, 2)
或Convert.ToInt32(value, 2)
这将为您提供long或int,然后只需使用
[Flags]
public enum SwitchStatus : int // or long
{
xMin = 1,
xMax = 1<<1,
yMin = 1<<2,
yMax = 1<<3,
...
}
SwitchStatus status = (SwitchStatus)Convert.ToInt32(value, 2);