Delphi-Quellcode:
For i := 1 to Length(S) do
S2 := S2 + IntToStr((Ord(S[i]) shr 6) and 3) +
IntToStr((Ord(S[i]) shr 4) and 3) +
IntToStr((Ord(S[i]) shr 2) and 3) +
IntToStr(Ord(S[i]) and 3);
Man kann diesen Code auch anders darstellen, dieses ist halt nur die schnelle Variante
Delphi-Quellcode:
For i := 1 to Length(S) do
S2 := S2 +
IntToStr((Ord(S[i]) div 64) mod 4) +
IntToStr((Ord(S[i]) div 16) mod 4) +
IntToStr((Ord(S[i]) div 4) mod 4) +
IntToStr(Ord(S[i]) mod 4);
IntToStr((Ord(S[i]) shr 4) and 3):
Ord(S[i]) - wandelt das Zeichen in einn Integer um
X shr 4 - verschiebt die Bits nach rechts (
Shift
Right) -
10xx0100 > 0000
10xx
X and 3 - entfernt sonstige Bits -
000010xx >
000000xx
IntToStr(X) - wandelt es wieder in eine Zahl um
Delphi-Quellcode:
S := '0121212102120...';
S2 := '';
For i := 1 to Length(S) div 4 do
S2 := S2 + Chr(
StrToInt(S[i * 4] shl 6) +
StrToInt(S[i * 4 + 1] shl 4) +
StrToInt(S[i * 4 + 2] shl 2) +
StrToInt(S[i * 4 + 3]);
Einfach die Zahlen nehmen,
S[i * 4]
wieder in einen Interger zurückverwandeln,
StrToInt(X)
die Bits wieder an die richtige Stelle schieben
X shl 4
und dann nur noch zurück ins Zeichen.
Chr(X)