簡體   English   中英

在C#中將數字表示為二進制

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM