Es scheint ein Fehler im C Sourcecode zu sein.
w[i = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVW XYZ0123456789./"([a & 1 ? a << (a & 1) & v[8 - i] : a ^ v[8 - i]) & 0x3f];
ist unsinnig, denn es wird nicht an w zugewiesen.
Ich nehme an es heisst
w[i] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVW XYZ0123456789./"([a & 1 ? a << (a & 1) & v[8 - i] : a ^ v[8 - i]) & 0x3f;
Mit dieser Annahme geht es mit einem for-loop.
Delphi-Quellcode:
procedure apgar(V: PChar; Outbuf: PChar);
const
Encoding = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789./';
var
W: array [0..8] of Char;
I: Integer;
A: Integer;
begin
for I := 0 to 7 do
begin
A := Integer(V[I]);
// a & 1 ?
if Odd(A) then
W[I] := Encoding[(a shl ((a and 1) and V[8-I])) and $3F]
else
W[I] := Encoding[(a xor V[8-I]) and $3F];
end;
Move(W[0], Outbuf[0], 8);
end;
Bitte pruefe die C-Source nochmal.