gpt4 book ai didi

c# - 解密二进制掩码 c#

转载 作者:太空宇宙 更新时间:2023-11-03 21:12:03 25 4
gpt4 key购买 nike

我有一个二元掩码类:

  public class Masque
{
public bool MasquerAdresse { get; set; }

public bool MasquerCpVille { get; set; }

public bool MasquerTelephone { get; set; }

public bool MasquerFax { get; set; }

public bool MasquerEmail { get; set; }
public bool MasquerNom { get; set; }
}

在数据库中我有一个二进制掩码字段:当我的值 1=> MasquerAdresse 为真,2 => MasquerCpVille 为真,4=> MasquerTelephone 为真 3=> MasquerAdresse 和 MasquerCpVille 为真等...,这是在 c# 中解码此二进制掩码的最佳方法

最佳答案

正如其他人已经在 C# 中指出的那样,我们通常使用 Flag EnumsEnum.HasFlag()去做这个。正如@Groo 在他的评论中添加的那样,这也提高了内存效率,因为每个 bool 占用了一个完整的字节。使用枚举它看起来像这样:

[Flags]
public enum Masque
{
MasquerAdresse = 1,

MasquerCpVille = 2,

MasquerTelephone = 4,

MasquerFax = 8,

MasquerEmail = 16

MasquerNom = 32
}

var masque = Masque.MasquerAdresse | Masque.MasquerTelephone;
var fromInt = (Masque) 5;
var trueResult = masque.HasFlag(Masque.MasquerTelephone);

如果你决定使用一个类,它看起来像这样:

public class Masque
{
public bool MasquerAdresse { get; set; }
public bool MasquerCpVille { get; set; }
public bool MasquerTelephone { get; set; }
public bool MasquerFax { get; set; }
public bool MasquerEmail { get; set; }
public bool MasquerNom { get; set; }

public static Masque FromBits(int bits)
{
return new Masque
{
MasquerAdresse = (bits & 1) > 0,
MasquerCpVille = (bits & 2) > 0,
...
};
}
}

使用二进制 & 它将应用返回值或 0 的位掩码。您可以将结果与掩码进行比较 (bits & 2) == 2 或简单地检查 > 0

关于c# - 解密二进制掩码 c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36997290/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com