出于某种原因,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
答案 0 :(得分:3)
这样可以解决问题:
int leftmask = ~0xFFFF;
答案 1 :(得分:3)
好吧,正如你所说,这个价值不会适应"默认为整数,
如果你不关心语义,你可以强迫它:
int leftmask = unchecked((int)0xFFFF0000);