を復号 iが値を有する場合に1 => MasquerAdresseが真である、2 => MasquerCpVilleが真である、4 => MasquerTelephoneは、他の人がすでに我々は通常Flag Enumsを使用するC#で指摘したようにC#の私はクラスにバイナリ仮面を有するバイナリ仮面のC#の
答えて
に、このバイナリ仮面をデコードするための最良のMethodeのある、... 3 => MasquerAdresseとMasquerCpVilleがなど真の事実でありますこれを行うにはEnum.HasFlag()
が必要です。彼のコメントに@Grooが追加されたので、すべてのブールがバイト全体を占有するため、これはメモリ効率も向上します。あなたはしかし、それは次のようになり、クラスを使用するように決定された場合
[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
をチェックします。
私はこのクラスを使用します。なぜなら、返り値を返すためにビット&1をboolに変換するにはどうすればよいのですか。 – user1428798
私は悪いです。答えを更新しました。 – Toxantron
- 1. ELMAH仮想ディレクタでバイナリを探しています
- 2. 仮想キーパッドが画面のデータ要素を隠している
- 3. 共有バイナリとは独立したバイナリのLinux
- 4. Android仮想デバイスは画面に表示されません
- 5. Android仮想デバイスの画面が大きすぎます
- 6. 仮想ベースと非仮想ベースが混在するC++ 11クラスの格子?
- 7. 継承クラスのC++仮想関数
- 8. ViewModelには、仮想クラス
- 9. 仮想関数のためバイナリ互換性が中断しました
- 10. Pythonの変更画面解像度仮想マシン
- 11. 純粋仮想関数でC++クラスを使用するには?
- 12. 消去と相互運用性のタイプ:C++での仮想バイナリ演算子の問題
- 13. C++のサイクリングには(3つのクラス、2つの仮想)
- 14. AMD仮想化を有効にする
- 15. 仮説を有意にテストする
- 16. Cのバイナリへのパス
- 17. バイナリ検索ツリーC++
- 18. Cバイナリ検索ツリー
- 19. C++の仮想デフォルトデストラクタ
- 20. カスタムイメージ形式をロードするC/C++バイナリ
- 21. FTPは、私はCに常駐するフォルダの仮想フォルダに作成した仮想フォルダ
- 22. C++のバイナリがWindows XP
- 23. Cのバイナリ検索ツリー、セグメンテーションフォールトエラー
- 24. C++でのバイナリ入出力
- 25. 別のバイナリでバイナリを定義する方法は?
- 26. nhibernateと仮想クラスのプロパティ?
- 27. C++仮想テーブルエラー?
- 28. C++仮想メソッド
- 29. iOSとPythonの共有バイナリ形式
- 30. 基底クラスの仮想および非仮想継承ミキシング
あなたは何の価値を得ていますか? [BitArray](https://msdn.microsoft.com/en-us/library/system.collections.bitarray(v = vs.110).aspx)のようにこれを行うには、いくつかの方法があります – jrbeverly
enumと[Enum.HasFlag](https://)の[Flags](https://msdn.microsoft.com/en-us/library/system.flagsattribute(v = vs.110).aspx)をご存知ですか? msdn.microsoft.com/en-us/library/system.enum.hasflag(v=vs.110).aspx)を参照して設定ビットを確認しますか? –
@Toxantronが以下の答えで書いたように、フラグenumはこれに適しています(それらは*基本的に整数フラグなので)。複数のboolプロパティを持つ必要はありません。それぞれの 'bool'フィールドは.NETでは1バイトを取るので、これらのフラグを単一の' Int32' enum(4バイト)にパックすることができれば、より効率的に渡すことができます。 **一方で**、列挙型はクラスのように拡張(継承)できないことに注意してください。そういうわけで、時には実際には[あなたのアプローチを使う](http://stackoverflow.com/q/757684/69809)、または将来の拡張を可能にする他の方法。 – Groo