2011-07-09 16 views
0

BYTEとINTの間の演算子はどのようにして&を使用できますか?c#バイトAND演算子

それはここで言っている:

http://int64.org/docs/gamestat-protocols/ase.html

しかし、PHPでその作業が、C#のではないで...

PHP:

if ($flag & 1) 
    ... 
} 

C#の

if (flag & 1) 
{ 
    ... 
} 
+0

「作業していない」ことについてもっと正確にする必要があります。しかし、私は 'flag&1 == 1'があなたの問題を解決すると確信しています。 –

答えて

6

flag & 1の部分は動作していますが、ifにはブールという表現が必要です。だから、あなたが行うことができます:あなたは!=として&表現の周りに括弧を配置する必要があり

if ((flag & 1) != 0) 

&よりも高い優先順位を(タイト結合する)があります。

フラグのセットを使用している場合は、となります。通常、という列挙型を使用するとよいでしょう。例えば、BindingFlagsを見て - あなたが使用する可能性があります:型の安全性を(あなたはフラグの正しい種類と比較しようとしている知っているので)増加し、マジックナンバーの使用を減らし

if ((flags & BindingFlags.Instance) != 0) 

0

このようにしてみてください:ifはブール式を期待する一方

if ((flag & 1) == 1) 
{ 
    ... 
} 

&オペレータは、C#の整数を返します。