紧急求助各位好心大哥大姐:我这个代码哪里错了,老是溢出!

ttbs123 2005-07-09 04:26:00
<%
Function encrypt(v(),k())
dim y,z,sum,n,delta
y=v(0)
z=v(1)
sum=0
delta=2654435769
n=16
while n>0
sum =sum+ delta
y=y+((z*16)+k(0) xor z+sum xor (z\32)+k(1))
z =z+((y*16)+k(2) xor y+sum xor (y\32)+k(3))
n=n-1
wend

v(0)=y
v(1)=z
end Function
dim v(2),k(4)
v(0)=0
v(1)=0
K(0)=1
K(1)=2
K(2)=3
K(3)=4
response.write encrypt(v,k)
%>
数据类型可能不匹配,代码运行老是溢出,该怎么办???
...全文
142 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ttbs123 2005-07-09
  • 打赏
  • 举报
回复
大家帮帮忙啊
ttbs123 2005-07-09
  • 打赏
  • 举报
回复
其中n为32或者16都可以
ttbs123 2005-07-09
  • 打赏
  • 举报
回复
谢谢楼上的大哥,其实这个是tea加密代码,我是从C++代码翻译过来,c++可以编译通过,到了asp就出错溢出,是不是我改写错误了呢?我把c++源码贴出来:
// v[2] : 64bit data, k[4] : 128bit key

void encipher( unsigned long * const v, const unsigned long * const k )
{
register unsigned long y = v[0], z = v[1], sum = 0, delta = 0x9E3779B9,
a = k[0], b = k[1], c = k[2], d = k[3], n = 32;

while ( n-- > 0 )
{
sum += delta;
y += ( z << 4 ) + a ^ z + sum ^ ( z >> 5 ) + b;
z += ( y << 4 ) + c ^ y + sum ^ ( y >> 5 ) + d;
}
v[0] = y;
v[1] = z;
}
bingbingcha 2005-07-09
  • 打赏
  • 举报
回复
无论你的变量是int还是lng或者sng都不能满足你的要求.

你求出的值太大了..建议你分开求..然后再次相加后直接输入..不要赋予变量..

例如:

<%
aa = 111111111111111111

bb = 9999999999999999999999999
qq = cstr(aa+bb)
response.write qq
%>
beiouwolf 2005-07-09
  • 打赏
  • 举报
回复
Function encrypt(v(),k())
FUNCTION可以这样引用的吗?
ttbs123 2005-07-09
  • 打赏
  • 举报
回复
这个运算后的数据我还要直接添加入数据库的,用js可能不大好。
asp真的没办法了吗?
blueonly 2005-07-09
  • 打赏
  • 举报
回复
vb的运算符没有那么丰富,可以用js
下表列出了 JScript 运算符:

描述 语言元素
将两个数相加或连接两个字符串。 加法运算符 (+)
将一个值赋给变量。 赋值运算符 (=)
对两个表达式执行按位与操作。 按位与运算符 (&)
将一个表达式的各位向左移。 按位左移运算符 (<<)
对一个表达式执行按位取非(求非)操作。 按位非运算符 (~)
对两个表达式指定按位或操作。 按位或运算符 (|)
将一个表达式的各位向右移,保持符号不变。 按位右移运算符 (>>)
对两个表达式执行按位异或操作。 按位异或运算符 (^)
使两个表达式连续执行。 逗号运算符 (,)
返回 Boolean 值,表示比较结果。 比较运算符
复合赋值运算符列表。 复合赋值运算符
根据条件执行两个表达式之一。 条件(三元)运算符 (?:)
将变量减一。 递减法运算符 ( — )
删除对象的属性,或删除数组中的一个元素。 delete 运算符
将两个数相除并返回一个数值结果。 除法运算符 (/)
比较两个表达式,看是否相等。 相等运算符 (==)
比较两个表达式,看一个是否大于另一个。 大于运算符 (>)
比较两个表达式,看一个是否大于等于另一个。 大于等于运算符 (>=)
比较两个表达式,看值是否相等并具有相同的数据类型。 严格相等运算符 (===)
给变量加一。 递增运算符 (++)
比较两个表达式,看是否不相等。 不等运算符 (!=)
返回一个 Boolean 值,表明某个对象是否为特定类的一个实例。 instanceof 运算符
比较两个表达式,看是否一个小于另一个。 小于运算符 (<)
比较两个表达式,看是否一个小于等于另一个。 小于等于运算符 (<=)
对两个表达式执行逻辑与操作。 逻辑与运算符 (&&)
对表达式执行逻辑非操作。 逻辑非运算符 (!)
对两个表达式执行逻辑或操作。 逻辑或运算符 (||)
将两个数相除,并返回余数。 取余运算符 (%)
将两个数相乘。 乘法运算符 (*)
创建一个新对象。 new 运算符
比较两个表达式,看是否具有不相等的值或数据类型不同。 不等运算符 (!==)
包含 JScript 运算符的执行优先级信息的列表。 运算符优先级
对两个表达式执行减法操作。 减法运算符 (-)
返回一个表示表达式的数据类型的字符串。 typeof 运算符
表示一个数值表达式的相反数。 一元取反运算符 (-)
在表达式中对各位进行无符号右移。 无符号右移运算符 (>>>)
避免一个表达式返回值。 void 运算符
blueonly 2005-07-09
  • 打赏
  • 举报
回复
算法有问题
ttbs123 2005-07-09
  • 打赏
  • 举报
回复
怎么没有人来啊???

28,406

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧