Cint溢出

VBS里,超出Integer类型的取值范围,该类型的取值范围为-32,768 到 32,767 之间的整数。

 

出错的根源:

在ASP里,有时候为了仿止注入,所以在接收参数的时候直接使用Cint函数把接过来的参数转换为Integer(数字)类型,这就存在一个潜在问题,当页面接收的某个参数(Request("xxx"))超过取值范围时(可简单理解为5位数字),就会发生此错误。这个是只有初级程序员会范的错误。

 

VBS里,超出Integer类型的取值范围,该类型的取值范围为-32,768 到 32,767 之间的整数。

  cint范围   -32,768   到   32,767。  (5位整数)
  clng范围   -2,147,483,648   到   2,147,483,647。
  CCur范围   -922,337,203,685,477.5808 到 922,337,203,685,477.5807(15位数)

 

解决办法:

有两个方案:

 

一,快速解决方案,打开出错的页面,把所有的Cint函数换为CCur函数(用个字符替换软件,把Cint换为CCur)。转换后,取值范围将从-32,768 到 32,767 (5位整数)提升到-922,337,203,685,477.5808 到 922,337,203,685,477.5807(15位数),但此法也有潜在问题,如果接收数值超过15位,那也会溢出,不过如果只是处理ID字段(如果数据库里有,而且出错的是这个),那么可以放心,数据要达到15位数还是需要很长时间的。

 

二,完美解决方案,不要再使用Cint、CCur、Clng一类的转换函数,而应该使用IsNumeric 函数来进行判断,此法需要有一定的编程能力时行函数修改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值