【发布时间】:2018-11-15 17:06:21
【问题描述】:
我有从复选框中选择的具有按位值 [1,2,4,8,16,32] 的类型,当保存到数据库时,我组合选定的值并获得例如 42 的值。如何计算从组合值中选择的值,在编辑屏幕上我想重新检查选择的值。
【问题讨论】:
-
您可以检查
Enums上使用的Flags 属性。保存时可以将其转换为 int。 -
你有位值。使用屏蔽(按位与)来确定是否设置了位。例如,如果设置了值为
16的位,value & 16将非零。 -
Enumerable.Range(0, 31).Select(i => 1 << i).Where(i => (42 & i) != 0)=> 2, 8, 32。希望您没有超过 32 个复选框,并注意负值。 (我不喜欢这种存储东西的方式。)
标签: c# bit-manipulation