我有一些旧的C代码正在转换为C#。有很多这样的按位运算符
const unsigned char N = 0x10;
char C;
.....
if (C & N)
{
.....
}
在C#中这相当于什么?例如,第一行在C#中无效,因为编译器说没有从int到char的转换。在C#中也未取消签名有效的运算符。
最佳答案
const char N = (char)0x10;
要么
const char N = '\x10';
和
if ((C & N) != 0) // Be aware the != has precedence on &, so you need ()
{
}
但是请注意,C中的
char
是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中引入的)
关于c# - C#按位运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7914283/