怎样将2个字符串异或得到一个新串?

解决方案 »

  1.   

    var
      S1, S2, R: String;
      I, C, C1, C2: Integer;
    begin
      S1 := 'ABCD';
      S2 := '12345ABCDE';
      C1 := Length(S1);
      C2 := Length(S2);
      C := C1;
      if C < C2 then C := C2;
      S1 := S1 + StringOfChar(#0, C - C1);
      S1 := S1 + StringOfChar(#0, C - C2);
      SetLength(R, C);  for I := 1 to C do
        R[I] := Chr(Ord(S1[I]) xor Ord(S2[I]));
      ShowMessage(R);
    end;————————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    ————————————————————————————————————
      

  2.   

    如果异或的字符串长度不大于8的话可以用下面的。var
      S1, S2, S: string;
      L1, L2: Integer;
    begin
      S1 := 'ABCD';
      S2 := '12345ABC';
      L1 := Length(S1);
      L2 := Length(S2);
      if L2 > L1 then L1 := L2;
      SetLength(S, L1);
      PInt64(Pointer(S))^ := PInt64(S1)^ xor PInt64(S2)^;
      ShowMessage(S);
    end;