Eine dumme Idee: Kommt man mit so etwas in der Richtung weiter?
Delphi-Quellcode:
procedure TTest.p();
const
input = '\xc4\x80\xc4\x86Hallo';
pattern = '\\x((\d|[a-f]*){2})';
var
matchEvaluator: TMatchEvaluator;
begin
WriteLn( TRegEx.Replace(input, pattern, unescape) );
end;
function TTest.unescape(const match: TMatch): String;
var
hexNumber: String;
begin
hexNumber := '$' + match.Groups[1].Value;
Result := Chr( Byte.Parse(hexNumber) );
end;