2014-10-30 96 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 

雖然它不作爲清潔我想例如不得不混合語言,它完美地爲我的目的工作。

相關問題