将VBA按位运算符转换为C#

时间:2018-05-03 16:16:42

标签: c# vba bitwise-operators bit-shift

我在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);

1 个答案:

答案 0 :(得分:2)

您的原始代码不会改变输入。它只掩盖它。直接翻译可能是:

var Bit1 = (Var1 & (1 << 14)) | (Var1 & (1 << 15));

这有多种变化。例如,您可以同时屏蔽这两个位:

var Bit1 = (Var1 & (3 << 14)); // decimal 3 is binary 11