我把一个包含两个加密函数的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)
。