Ich verstehe das so, daß du die beiden Hex-Strings bitweise verschachtelst. Folgende Funktion sollte das leisten:
Delphi-Quellcode:
function Convert(const A, B: string): string;
function Merge(CA, CB: Char): string;
type
TByteSet = set of 0..3;
var
BS: TByteSet;
b1: Byte;
b2: Byte;
I: Integer;
begin
b1 := StrToInt('$' + CA);
b2 := StrToInt('$' + CB);
BS := [];
for I := 0 to 3 do begin
if I in TByteSet(b1) then begin
Include(BS, 2*I);
end;
if I in TByteSet(b2) then begin
Include(BS, 2*I + 1);
end;
end;
Result := IntToHex(Byte(BS), 2);
end;
var
I: Integer;
begin
Assert(Length(A) = Length(B), 'Strings müssen gleich lang sein!');
Result := '';
for I := 1 to Length(A) do begin
Result := Result + Merge(A[I], B[I]);
end;
end;