Thema: Delphi String umwandeln

Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#7

Re: String umwandeln

  Alt 7. Mär 2005, 18:08
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 > 000010xx
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)
$2B or not $2B
  Mit Zitat antworten Zitat