[英]Represent a Number as a Binary in C#
我有四個復選框,用戶可以選擇任何復選框,我想將選中的復選框存儲在一個值中。 邏輯應該像
Item Value Checkbox1 1 Checkbox2 2 Checkbox3 4 Checkbox4 8
如果用戶選擇Checkbox1和Checkbox2,則應將其存儲3。如果選擇Checkbox1,Checkbox2和Checkbox3,則應將其存儲7。它將存儲一些值。 現在,我要從存儲的值派生選定的復選框,這意味着如果值是7,則選擇Checkbox1,Checkbox2和Checkbox3。
我該如何實現? 如果有什么可以幫助我的。
為了確定哪些復選框應該被選中,使用按位與運算 :
Checkbox1.Checked = value & 1;
Checkbox2.Checked = value & 2;
Checkbox3.Checked = value & 4;
Checkbox4.Checked = value & 8;
使用帶有Flags屬性的enum
:
[Flags]
public enum CheckBoxEnum
{
Value1 = 1,
Value2 = 2,
Value3 = 4,
Value4 = 8,
}
然后,您可以使用按位運算檢查結果:
var res = CheckBoxEnum.Value1 | CheckBoxEnum.Value2;
var res2 = CheckBoxEnum.Value1 & CheckBoxEnum.Value2;
UPD: @Glorfindel的答案更為簡潔,但您應使用按位或而不是AND
Checkbox1.Checked = value | 1;
Checkbox2.Checked = value | 2;
Checkbox3.Checked = value | 4;
Checkbox4.Checked = value | 8;
您正在尋找應用於Enum
FlagsAttribute
[Flags]
public enum CheckboxesSelected
{
Checkbox1 = 1,
Checkbox2 = 2,
Checkbox3 = 4,
Checkbox4 = 8
}
然后:如果選中了復選框控件,則可以執行以下操作:
CheckboxesSelected result = CheckboxesSelected.Checkbox1 | CheckboxesSelected.Checkbox2; //result will be 3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.