C# 字符上的C位运算符
我有一些旧的C代码正在转换成C。有很多像这样的位运算符C# 字符上的C位运算符,c#,char,bit-manipulation,C#,Char,Bit Manipulation,我有一些旧的C代码正在转换成C。有很多像这样的位运算符 const unsigned char N = 0x10; char C; ..... if (C & N) { ..... } 这在C中的等价物是什么?例如,第一行在C中无效,因为编译器说没有从int到char的转换。Nor在C中不是有效的运算符 const char N = (char)0x10; 或 及 但请注意,C中的char是1字节,C中是2字节,所以也许您应该使用byte 但您可能希望使用标志,因此可以使用枚举
const unsigned char N = 0x10;
char C;
.....
if (C & N)
{
.....
}
这在C中的等价物是什么?例如,第一行在C中无效,因为编译器说没有从int到char的转换。Nor在C中不是有效的运算符
const char N = (char)0x10;
或
及
但请注意,C中的char是1字节,C中是2字节,所以也许您应该使用byte
但您可能希望使用标志,因此可以使用枚举:
注意,这是在C4.0中引入的
或
及
但请注意,C中的char是1字节,C中是2字节,所以也许您应该使用byte
但您可能希望使用标志,因此可以使用枚举:
请注意,这是在C4.0中引入的,谢谢。我喜欢标志选项,因为它更可读。谢谢你。我喜欢Flag选项,因为它更具可读性。
const char N = '\x10';
if ((C & N) != 0) // Be aware the != has precedence on &, so you need ()
{
}
const byte N = 0x10;
[Flags]
enum MyEnum : byte
{
N = 0x10
}
MyEnum C;
if (C.HasFlag(MyEnum.N))
{
}