我将包含几个加密函数的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
由于所有操作都返回整数,我无法弄清楚结果不匹配,这导致加密过程意外地工作。
答案 0 :(得分:9)
在C#(inter / 256)
中进行整数除法,而VB6则不进行整数除法。因此,在您的一个代码示例中,该分区的结果在其余操作之前被截断为27,而另一个使用的值为27.109375。这导致了最终结果的差异。
如果整数除法是您想要的,则在VB6中使用(inter \ 256)
。