Код | var key:string; intkey,i:integer; tmp:byte; begin key:= '10101'; intkey:=0; for i:=1 to length(key) do intkey:=intkey+(strtoint(key[i])*(Round(power(2,length(key)-i)))); Reset(input); Rewrite(output); while not eof(input) do begin read(input,tmp); for i:=7 downto 0 do begin if (intkey and (1 shl (length(key)-1))<>0) then tmp:=tmp xor (1 shl i); intkey:=intkey shl 1; if (intkey and (1 shl length(key))<>0) then intkey:=intkey or 1; end; write(output,tmp); end; closeFile(output); closeFile(input); Memo1.Lines.LoadFromFile(SaveDialog1.FileName);
|
Больше всего интересует вот эта часть:
Код | for i:=7 downto 0 do begin if (intkey and (1 shl (length(key)-1))<>0) then tmp:=tmp xor (1 shl i); intkey:=intkey shl 1; if (intkey and (1 shl length(key))<>0) then intkey:=intkey or 1; end;
|
Пожалуйста помогите разобраться :( |