
function Endian64(X: Int64): Int64;
begin
Result := (X and $00000000000000FF) shl 56;
Result := Result + (X and $000000000000FF00) shl 40;
Result := Result + (X and $0000000000FF0000) shl 24;
Result := Result + (X and $00000000FF000000) shl 8;
Result := Result + (X and $000000FF00000000) shr 8;
Result := Result + (X and $0000FF0000000000) shr 24;
Result := Result + (X and $00FF000000000000) shr 40;
Result := Result + (X and $FF00000000000000) shr 56;
end;
Предлагается:

function Endian64(X: Int64): Int64;
type
Ti64 = packed record
Lo, Hi: LongWord;
end;
begin
Ti64(Result).Lo := Endian(Ti64(X).Hi);
Ti64(Result).Hi := Endian(Ti64(X).Lo);
end;