为什么这个函数返回的一定是字母?(0分)

  • 主题发起人 主题发起人 hxiaomin888
  • 开始时间 开始时间
H

hxiaomin888

Unregistered / Unconfirmed
GUEST, unregistred user!
const
C1=19798;
C2=81799;
function Encrypt( S: String;
Key: Word): String;
var
I: Integer;
j: Integer;
begin
Result := S;
for I := 1 to Length(S)do
begin
Result := char(byte(S) xor (Key shr 8));
Key := (byte(Result) + Key) * C1 + C2;
end;
s:=Result;
Result:='';
for i:=1 to length(s)do
begin
j:=Integer(s);
Result:=Result + Char(65+(j div 26))+Char(65+(j mod 26));
end;
end;
这行代码返回的为什么一定是字每:Result:=Result + Char(65+(j div 26))+Char(65+(j mod 26));
 
我的分没有啦,各位大侠能不能看在我是初学者的份上,帮帮忙吧,帮我觖答一下,我找过很多书,但都是没搞得太懂.
 
char返回的为什么不一定是字母呢?
 
char返回的也可能是空格,或其它符号,如: /,]等,为什么一定会是字母呢?
 
怎么大家都不肯帮解释一下?
 
Char(65+(j div 26)) 取值范围是Char(65)=》Char(65+255 div 26)
也就是 字符A - J
Char(65+(j mod 26));
取值范围是Char(65)=》Char(65+255 mod 26)
取值范围也是 A - V
怎么可能会是 / ] 等符号??
 
Result:=Result + Char(65+(j div 26))+Char(65+(j mod 26));
(j div 26) 的值: 因为j 肯定小于或等于255,所以(j div 26)的值介于0至9之间。因此,65+(j div 26)的值介于65至74之间,所以,Char(65+(j div 26))肯定是字母(A-J)。
(j mod 26) 的值: 因为j 肯定小于或等于255,所以(j mod 26)的值介于0至25之间。因此,65+(j mod 26)的值介于65至90之间,所以,Char(65+(j mod 26))肯定是字母(A-Z)。
综上所述,Result:=Result + Char(65+(j div 26))+Char(65+(j mod 26));返回的肯定是字母,并且都是大写字母。
 
“char返回的也可能是空格,或其它符号,如: /,]等,”,这是很正确的观点。
但究竟会返回什么值还是要决定于char()的括号内的数值。
 

Similar threads

I
回复
0
查看
587
import
I
I
回复
0
查看
639
import
I
I
回复
0
查看
657
import
I
后退
顶部