これを行う正しい方法がわかりません。しかし、これは私が欲しいものです。私は列挙型を持っています
EValue{A=1,B=2,C=4,D=8,E=16,}
データベースの int 値を number と言う必要があります。
A、c、Eを選択した場合は言う
データベースで 1=4=16 =21 と言う必要があります。
どちらでも構いませんが、21 から a,c,e を取得する方法
事前に助けてくれてありがとう
これを行う正しい方法がわかりません。しかし、これは私が欲しいものです。私は列挙型を持っています
EValue{A=1,B=2,C=4,D=8,E=16,}
データベースの int 値を number と言う必要があります。
A、c、Eを選択した場合は言う
データベースで 1=4=16 =21 と言う必要があります。
どちらでも構いませんが、21 から a,c,e を取得する方法
事前に助けてくれてありがとう
列挙値は 2 の累乗で表すことができるようです。
例2^0 = 1, 2^1 = 2
..など
したがって、問題は次のようになります。10進数を2進数に変換します。
その周りに単純なロジックを配置すると、それぞれの列挙型を取得できます。
e.g. For input 21, you could get 1, 4, 16 ( = 2 power 0, 2, 4)
それらを ENUM にマップできるようになりました。
次のようなことができます (使用している言語を言っていないので、疑似コードです):
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;
}