算术运算在 VB6 和 C# 中不返回相同值
Arithmetic operation not returning the same in VB6 and C#
我将包含几个加密函数的 VB6 模块翻译成 c#,
我在双方都有以下算术运算:
C#:
int inter, cfc;
inter = 6940;
cfc = Convert.ToInt32((((inter / 256) * 256) - (inter % 256)) / 256);
//cfc = 26
VB6:
Dim inter As long
Dim cfc As long
inter = 6940
cfc = (((inter / 256) * 256) - (inter Mod 256)) / 256
'cfc = 27
由于所有操作都返回整数,我无法找出结果不匹配,这导致加密过程意外运行。
在 C# 中 (inter / 256)
做整数除法,而 VB6 不做。因此,在您的一个代码示例中,该除法的结果在其余操作之前被截断为 27,而另一个使用值 27.109375。这会导致您的最终结果有所不同。
如果整数除法是您想要的,请在 VB6 中使用 (inter \ 256)
。
我将包含几个加密函数的 VB6 模块翻译成 c#, 我在双方都有以下算术运算:
C#:
int inter, cfc;
inter = 6940;
cfc = Convert.ToInt32((((inter / 256) * 256) - (inter % 256)) / 256);
//cfc = 26
VB6:
Dim inter As long
Dim cfc As long
inter = 6940
cfc = (((inter / 256) * 256) - (inter Mod 256)) / 256
'cfc = 27
由于所有操作都返回整数,我无法找出结果不匹配,这导致加密过程意外运行。
在 C# 中 (inter / 256)
做整数除法,而 VB6 不做。因此,在您的一个代码示例中,该除法的结果在其余操作之前被截断为 27,而另一个使用值 27.109375。这会导致您的最终结果有所不同。
如果整数除法是您想要的,请在 VB6 中使用 (inter \ 256)
。