2014-10-30 65 views
0

为什么在按位AND比较期间,这会导致vbScript中的溢出?为什么vbScript“和”运算符会导致溢出错误?

response.Write cDbl(2147483648) And cDbl(1) 
+0

有趣的是,如果我执行“On Error Resume Next”,则操作将正常工作。 达恩,好吧,那就是我所害怕的。我将不得不在这个问题上提出一些备用解决方案。基本上,我有一个范围从2^0到2^31的位数值的枚举,我需要在代码库中进行测试。不知道我将如何完成这一点。 – GWR 2014-10-30 11:54:45

+0

http://blogs.msdn.com/b/ericlippert/archive/2004/12/03/integer-arithmetic-in-vbscript-part-two.aspx – 2014-10-30 11:58:19

+0

感谢您的链接。你能帮我理解我在上面的例子中如何使用这些信息来做我想做的事情吗?我不太明白这篇文章中的内容 – GWR 2014-10-30 12:05:25

回答

0

我已经想出了解决这个问题的解决方法,使用服务器端JavaScript包装vbscript函数。这似乎比Eric Lippert的文章中提出的要简单得多。

解决方法如下:

<script language="javascript" runat="server"> 
    //bitand function for JS 
    //vbscript cant handle bitwise operations cleanly on values above 2^30 
    function bitandJS(a, b) { return a & b } 
</script> 

然后我包裹在一个VBScript函数在我的应用程序的一致性:

Function bitand(byVal a, byVal b) 
    bitand = bitandJS(a, b) 'done via server side JS 
End Function 

虽然它不作为清洁我想例如不得不混合语言,它完美地为我的目的工作。

相关问题