C# 设置位掩码以对等于0xFFFF0000的整数使用的最方便的方法是什么

C# 设置位掩码以对等于0xFFFF0000的整数使用的最方便的方法是什么,c#,bitmask,C#,Bitmask,出于某种原因,C#不希望隐式使用0xFFFF0000作为值,因为它高于int.MaxValue。我所期望的是,它可以以某种方式被转换为相应的负值 我必须做一些位运算,我想设置一个int为0xFFFF0000,仅用于此目的,与符号无关 但是,这不会编译: int leftmask = 0xFFFF0000; 错误是: Error 1 Cannot implicitly convert type 'uint' to 'int'. An explicit conversion exists

出于某种原因,C#不希望隐式使用0xFFFF0000作为值,因为它高于int.MaxValue。我所期望的是,它可以以某种方式被转换为相应的负值

我必须做一些位运算,我想设置一个int为0xFFFF0000,仅用于此目的,与符号无关

但是,这不会编译:

int leftmask = 0xFFFF0000;
错误是:

Error   1   Cannot implicitly convert type 'uint' to 'int'. An explicit conversion exists (are you missing a cast?) c:\....\Program.cs  127 28  

这将实现以下目的:

int leftmask = ~0xFFFF;

正如你所说,默认情况下,该值不适合整数

如果您不关心语义,您可以强制它:

int leftmask = unchecked((int)0xFFFF0000);

您是否尝试过
uint leftmask=0xFFFF0000
Yes,但出于某种原因,它不喜欢随后使用带符号int的操作,这也有点奇怪。指示
enum
使用uint作为其基本存储类型。我忘了确切的语法。是的,很不幸,这是一次关于Codibility的采访,他们给了我签名的INT。无论如何,我必须提交,不用担心,出于好奇,我做了一个
,问题是什么?我投票赞成你的解决方案,但接受了Erti Chris解决方案,因为它对我来说似乎稍微清晰一些,但你的也很好。