请教大家一个关于异或的基础问题;(50分)

  • 主题发起人 主题发起人 阿虫
  • 开始时间 开始时间

阿虫

Unregistered / Unconfirmed
GUEST, unregistred user!
有三个EDIT。分别是EDIT1、EDIT2、EDIT3。
我想将EDIT1和EDIT2中的字符进行异或,将异或的结果放在EDIT3中。EDIT1和EDIT2中的
字符有可能是二进制形式,也有可能是十进制形式,也可能是十六进制的形式的。
但我全当它是们是字符进行异彩或就行了//这样是否可以???
我是这样做的:
procedure TForm1.Button1Click(Sender: TObject);
var
s,s1,s2:string;
k1,k2:integer;
begin
edit1.text:=s1;
edit2.text:=s2;
begin
for k1:=1 to length(s1)do
k2:=length(s2);
s:=s + chr(ord(s1[k1]) xor ord(s2[k2]));
edit3.text:=s;
end;
end;
可却发现EDIT3中一执行就没有任何现示值。请问为什么,如何解决。急啊!!
 
procedure TForm1.Button1Click(Sender: TObject);
var
s,s1,s2:string;
k1,k2:integer;
begin
s1:=edit1.text;
s2:=edit2.text;
begin
for k1:=1 to length(s1)do
s:=s + chr(ord(s1[k1]) xor ord(s2[k1]));
edit3.text:=s;
end;
end;
 
只能显示是:空白的,或11111形式的,我的意思是异或后成为一串密码的。还有其它办法吗?
 
因為很多字符異或後得到的值都剛好落在ASCII碼為控制字符的區域。所以顯示為空白了。
如ord(s1[k1]) xor ord(s2[k1])=13,chr(13)你當然就看不到了。
 
谢谢啦。
 
后退
顶部