0

フィールド名Provinceビットを含むデータベーステーブルがあり、次のようなパターンのカウントを合計します。

AB-1
BC-2
CD-4
DE-8
EF-16.... and so on.

テーブル エントリには値 13 (Province ビット) があり、これはエントリ AB、CD、DE (合計 13) に対するチェックボックスをオンにする必要があることを意味します。

同じ背後にあるロジックを取得できません。合計がテーブルのエントリになるチェックボックスのみをチェックするにはどうすればよいですか?

4

3 に答える 3

1

値がビットごとの合計に含まれているかどうかを確認する必要があります。

if( interestedInValue & totalValue == interestedInValue) 
{
  // this value is in the total, check the box
}

& http://msdn.microsoft.com/en-us/library/sbf85k1c(v=vs.71).aspxに関するドキュメント

例 13 = 1 + 4 + 8
13 & 1 == 1 // 真
13 & 2 == 2 // 偽
13 & 4 == 4 // 真
13 & 8 == 8 // 真
13 & 16 == 16 // 間違い

編集:より明確にするために

ab.Checked = 1 && ProvinceBit == 1  // checkbox AB  
bc.Checked = 2 && ProvinceBit == 2  // checkbox BC  
...
于 2012-09-30T14:26:35.433 に答える
0

フィールドはビット フラグを使用しています。

13 は 1101 バイナリです。

したがって、値をビットに変換し、各チェックボックスに 1 ビットを割り当てます。

于 2012-09-30T14:27:25.263 に答える
0

数値を文字列に変換すると、配列に変換したり、文字列を反復処理したりできます。少し強引ですが、必要なものを提供します。

var value = 13
string binary = Convert.ToString(value, 2);
//binary = "1101"
于 2012-10-01T01:57:08.107 に答える