将 VBA 按位运算符转换为 C#
Convert VBA bitwise operator to C#
我在 VBA 中有一个按位运算,现在我想将其转换为 C#。
我尝试使用 C# 按位运算符进行转换,但没有得到结果。
VBA 位运算
Bit1 = (Var1 And 2 ^ 14) Or (Var1 And 2 ^ 15)
C# 按位运算
var Bit1 = (bitvalue >> 14) | (bitvalue >> 15);
由于 VBA 没有位移运算符,我们使用 2^places 进行右移,在 C# 中,我们可以简单地使用 >> 进行右移运算符,但它没有给出我的结果在 VBA 中获取它。可能是什么原因?
这是我的完整 C# 函数,它与 VBA:
中的类似
public void bitcalc()
{
var Bit1 = (bitvalue >> 14) | (bitvalue >> 15);
if (Bit1 == 16384) getISO15031BitsLetter = "C";
else if (Bit1 == 32768) getISO15031BitsLetter = "B";
else if (Bit1 == 49152) getISO15031BitsLetter = "U";
else getISO15031BitsLetter = "P" ;
}
您的原始代码没有移位输入。它只是掩盖它。直接翻译可以是:
var Bit1 = (Var1 & (1 << 14)) | (Var1 & (1 << 15));
对此有多种变体。例如,您可以同时屏蔽两个位:
var Bit1 = (Var1 & (3 << 14)); // decimal 3 is binary 11
我在 VBA 中有一个按位运算,现在我想将其转换为 C#。
我尝试使用 C# 按位运算符进行转换,但没有得到结果。
VBA 位运算
Bit1 = (Var1 And 2 ^ 14) Or (Var1 And 2 ^ 15)
C# 按位运算
var Bit1 = (bitvalue >> 14) | (bitvalue >> 15);
由于 VBA 没有位移运算符,我们使用 2^places 进行右移,在 C# 中,我们可以简单地使用 >> 进行右移运算符,但它没有给出我的结果在 VBA 中获取它。可能是什么原因?
这是我的完整 C# 函数,它与 VBA:
中的类似public void bitcalc()
{
var Bit1 = (bitvalue >> 14) | (bitvalue >> 15);
if (Bit1 == 16384) getISO15031BitsLetter = "C";
else if (Bit1 == 32768) getISO15031BitsLetter = "B";
else if (Bit1 == 49152) getISO15031BitsLetter = "U";
else getISO15031BitsLetter = "P" ;
}
您的原始代码没有移位输入。它只是掩盖它。直接翻译可以是:
var Bit1 = (Var1 & (1 << 14)) | (Var1 & (1 << 15));
对此有多种变体。例如,您可以同时屏蔽两个位:
var Bit1 = (Var1 & (3 << 14)); // decimal 3 is binary 11