Побитовые операторы C # На char - PullRequest
1 голос
/ 27 октября 2011

У меня есть старый C-код, который конвертируется в C #. Есть много побитовых операторов, таких как

const unsigned char N = 0x10;
char C;
.....
if (C & N)
{
   .....
}

Что было бы эквивалентно этому в C #? Например, первая строка недопустима в C #, так как компилятор говорит, что нет преобразования из int в char. Также неподписанный действительный оператор в C #.

1 Ответ

9 голосов
/ 27 октября 2011
const char N = (char)0x10;

или

const char N = '\x10';

и

if ((C & N) != 0) // Be aware the != has precedence on &, so you need ()
{
}

но учтите, что char в C - это 1 байт, в C # - 2 байта, поэтому, возможно, вам следует использовать byte

const byte N = 0x10;

но, возможно, вы хотите использовать флаги, чтобы вы могли использовать enum:

[Flags]
enum MyEnum : byte
{
    N = 0x10
}

MyEnum C;

if (C.HasFlag(MyEnum.N))
{
}

(обратите внимание, что Enum.HasFlag был представлен в C # 4.0)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...