VB6和C#中的算术运算不返回相同的值

时间:2017-11-17 14:17:35

标签: c# math vb6 code-conversion

我将包含几个加密函数的VB6模块翻译成c#, 我双方都有以下的aritmethic操作:

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

由于所有操作都返回整数,我无法弄清楚结果不匹配,这导致加密过程意外地工作。

1 个答案:

答案 0 :(得分:9)

在C#(inter / 256)中进行整数除法,而VB6则不进行整数除法。因此,在您的一个代码示例中,该分区的结果在其余操作之前被截断为27,而另一个使用的值为27.109375。这导致了最终结果的差异。

如果整数除法是您想要的,则在VB6中使用(inter \ 256)