c# - C#按位运算符

标签 c# char bit-manipulation

我有一些旧的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/

相关文章:

c - 为什么用大字符减去小字符会得到一个大的正整数而不是负整数?

C++ 字符串 char** 翻译

c# - 为什么即使没有根,也不会收集带有终结器的对象?

c# - 是否可以根据条件编译符号(预处理器常量)的值在 C# 项目中添加引用?

c# - 掌握 Gridview 绑定(bind)

c# - 实现单例设计模式[请建议]

java - 将字符串中的数字替换为字符

Javascript 按位运算符和 Canvas 动画

c - 按位补码

java - 将位字符串转换为 double