2011-10-27 6 views
1

나는 C#으로 변환되는 오래된 C 코드를 가지고있다. 이것과 같은 비트 연산자가 많이 있습니다.C# 비트 연산자 On char

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

C#에서 이와 비슷한 것은 무엇입니까? 예를 들어 컴파일러에서 int에서 char 로의 변환이 없다고 말하면 C#에서는 첫 번째 행이 유효하지 않습니다. 또한 C#에서는 부호없는 연산자가 유효하지 않습니다.

답변

8
const char N = (char)0x10; 

또는

const char N = '\x10'; 

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

하지만 C에서 char는 2 바이트의 C#으로, 1 바이트, 그래서 아마 당신이 사용해야하는 점에 유의 byte

const byte N = 0x10; 

하지만 아마 당신은 플래그를 사용하려면, 그래서 당신은 enum을 사용할 수

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

MyEnum C; 

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

(Enum.HasFlag는 C# 4.0에서 소개 된 참고) 그에 대한

+0

감사합니다. 좀 더 읽기 쉽기 때문에 Flag 옵션을 좋아합니다. – Jonnster