我在VBA中有一个按位操作,现在我想把它转换为C#。
我尝试使用C#按位运算符进行转换,但我没有得到结果。
VBA按位操作
$this->call('GET', '/url/here', $yourRequestParametersHere);
C#按位操作
Bit1 = (Var1 And 2 ^ 14) Or (Var1 And 2 ^ 15)
由于VBA没有位移运算符,我们使用2 ^位进行右移,而在C#中我们可以简单地使用>>对于右移操作员,但它没有给我我在VBA中得到它的结果。可能是什么原因?
这是我的完整C#功能,在VBA中类似:
var Bit1 = (bitvalue >> 14) | (bitvalue >> 15);
答案 0 :(得分:2)
您的原始代码不会改变输入。它只掩盖它。直接翻译可能是:
var Bit1 = (Var1 & (1 << 14)) | (Var1 & (1 << 15));
这有多种变化。例如,您可以同时屏蔽这两个位:
var Bit1 = (Var1 & (3 << 14)); // decimal 3 is binary 11