- UID
- 6880
注册时间2006-1-12
阅读权限30
最后登录1970-1-1
龙战于野
TA的每日心情 | 开心 2018-2-26 08:32 |
---|
签到天数: 19 天 [LV.4]偶尔看看III
|
请教高人有关输出位数的问题。
请教高人:
1. edit1 输入机器码:94473715811
2. 与固定字符串(dflk5632129T.cOm)连接
3. 取出连接后的偶数位
4. 偶数位字符串再连接在(2)字符串的尾部
5. (4)连接后的字符串是40位
6. (4)连接后的字符串逐位与($0D, $01, $14, $05,$02)逐位xor运算
结果应该是40位
问题:
edit2 输出的位数是机器码位数,不是40位。
下面是我写的代码,请高人指点那写错了。
谢谢!
function DoubleStr(s: string): string; //连接字符串后取出偶数位字符后再连接
var
str1,str2,str3:string;
i: Integer;
begin
If Length(s) =0 Then MessageBox(0, '请输入机器码', '提示',MB_OK + MB_ICONWARNING)
else
str1:='dflk5632129T.cOm';
str2:=concat(s,str1);
s:= '' ;
for i := 2 to Length(Str2) do
if i mod 2 = 0 then
s:= s + Str2;
str3 := concat(str2,s);
end;
function OpeateStr(const str3 :string): string; //字符逐位 xor 运算
const
snLen = 5 ;
sn:array[1..snLen] of Integer =($0D, $01, $14, $05,$02);
var
i,n: integer;
a:string;
begin
setLength(a,Length(str3));
for i :=1 to Length(str3) do
begin
n := i mod snLen ;
if n = 0 then
n := 5 ;
a := char(ord(str3) xor sn[n]);
Result := a;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
edit2.text:= OpeateStr(edit1.text);
end;
[ 本帖最后由 wzwgp 于 2006-8-8 10:20 编辑 ] |
|