delphi会偷偷转换数据类型吗?
时间:2011-09-30
来源:互联网
function Decrypt(const S: String): String; var I: byte; Key: Word; begin Key := Keyword; SetLength(Result,Length(S)); for I := 1 to Length(S) do begin Result[I] := char(byte(S[I]) xor (Key shr 8)); Key := (byte(S[I]) + Key) * 21469+ 12347; end; end;
已知(byte(S[I]) + Key) * 21469+ 12347的计算结果为:570636898
但Key的数据类型为word
输出Key 的时候结果不是570636898呢?输出的时候key 是一个比570636898小很多的值,没有超过65535的上限
作者: tg01 发布时间: 2011-09-30
messagebox(inttostr((byte(S[I]) + Key) * 21469+ 12347))
570636898
作者: tg01 发布时间: 2011-09-30
作者: jayqiang 发布时间: 2011-09-30
你变量Key定义为Word,而Word类型的数据范围是0-65535。你给Key那么大一个值不就超出它的范围了!你可以把Key定义成Integer或其它在范围内的数据类型。
我现在的问题就是给
Key := (byte(S[I]) + Key) * 21469+ 12347;
这一句它不会出错
并且我messagebox输出Key 和(byte(S[I]) + Key) * 21469+ 12347的值不一样!
作者: tg01 发布时间: 2011-09-30
不要把
Key: Word
改成
Key: Integer
作者: ADSLAN 发布时间: 2011-09-30
2楼说得不错
不要把
Key: Word
改成
Key: Integer
Delphi(Pascal) code
Key := (byte(S[I) + Key) * 21469+ 12347;]
大哥这代码不是我写的,而是正常运行的程序里面取出来的!
Delphi(Pascal) code
messagebox(inttostr((byte(S[I]) + Key) * 21469+ 12347))弹出来是570636898
Delphi(Pascal) code
messagebox(inttostr((byte(S[I]) + Key) * 21469+ 12347))弹出来是40000多的值
等式两边不一样,谁能告诉我为什么?
作者: tg01 发布时间: 2011-09-30
引用 4 楼 adslan 的回复:
2楼说得不错
不要把
Key: Word
改成
Key: Integer
Delphi(Pascal) code
Key := (byte(S[I) + Key) * 21469+ 12347;]
大哥这代码不是我写的,而是正常运行的程序里面取出来的!
Delphi(Pascal) code
messag……
一个是 word值, word值是不会超过 65535的
你一个 word值 65535 你再+1 就变成0了
下面那个是 从 integer 转成 str的, 所以他不受 限制.
作者: warrially 发布时间: 2011-09-30
引用 5 楼 tg01 的回复:
引用 4 楼 adslan 的回复:
2楼说得不错
不要把
Key: Word
改成
Key: Integer
Delphi(Pascal) code
Key := (byte(S[I) + Key) * 21469+ 12347;]
大哥这代码不是我写的,而是正常运行的程序里面取出来的!
Delphi(Pas……
您好,请问可以解释的细一些吗?
我不是学Delphi的
我用的是.net正在翻译这个函数
按照您的意思就是说40000是570636898除以N得出来的余数是吗?
作者: tg01 发布时间: 2011-09-30
原作者的情况有以下两种:
1.这句的意思是KEY值等于后面结果取低8位,相当于KEY=word(*);
2.错误的估计了值的范围,本来需要integer的用了word
作者: cglzyz 发布时间: 2011-09-30
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28