我不知道正确的方法是什么。但这就是我想要的。 我有一个Enum
安勤{A = 1,B = 2,C = 4,d = 8,E = 16,}
我需要将数据库中的int值称为数字,
如果选择A,c,E
需要在数据库中说1 = 4 = 16 = 21。
哪个好,但是 然后从21我如何检索a,c,e
提前感谢您的帮助
答案 0 :(得分:0)
你可以这样做(伪代码,因为你没说出你正在使用的语言):
function getEnums(value:string):enum[]
{
var result = new enum[];
foreach (var e in Enum.getValues(enum).orderBy(val.toInt()))
{
if (value == 0)
break;
var eVal = e.toInt();
if (value >= eVal)
{
result.add(e);
value -= eVal;
}
}
return result;
}
答案 1 :(得分:0)
看起来您的枚举值可以用2的幂表示。
e.g。 2^0 = 1, 2^1 = 2
..等等。
所以你的问题归结为:将十进制转换为bianry。
如果你把简单的逻辑放在那里,你可以得到各自的枚举。
e.g. For input 21, you could get 1, 4, 16 ( = 2 power 0, 2, 4)
现在您可以将它们映射到ENUM。