Einfache Zeichenfolge Kompression


Eine einfache Routine, Zeichenfolgen zu komprimieren.

Autor: SWAG-SUPPORT-TEAM

{Sie nicht diese Art der Kompression von meine Routinen, aber hier erhalten
Sie sind sowieso. Beim Testen, erhalten Sie beste Komprimierung Wenn Sie
Verwenden Sie Englisch und längere Zeichenfolgen.
}
Einheit-Compress;

Schnittstelle

Const
CompressedStringArraySize = 500; {irren Sie auf der Seite der Großzügigkeit}

Typ
tCompressedStringArray = Array [als 1..CompressedStringArraySize] Byte;

Funktion GetCompressedString(Arr: tCompressedStringArray): String;

Prozedur CompressString (St: String; Var Arr: tCompressedStringArray;
Var-Len: Integer);
{wandelt St in eine tCompressedStringArray der Länge Len}

Umsetzung

Const
FreqChar: Array [4..14] von Char = 'Etaonirshdl';
{kann nicht in [0..3] sein, weil zwei leeren Bits einen Raum bedeuten}

Funktion GetCompressedString(Arr: tCompressedStringArray): String;
Var
UMSCHALT: Byte;
Ich: Integer;
ch: Char;
St: String;
b: Byte;

Funktion GetHalfNibble: Byte;
beginnen
GetHalfNibble: = (Arr [i] Shr Shift) und 3;
Wenn Shift = 0 dann beginnen
UMSCHALT: = 6;
Inc(i);
sonst dec(Shift,2) End;
Ende;

beginnen
St: = '';
Ich: = 1;
UMSCHALT: = 6;
Wiederholen Sie die
b: = GetHalfNibble;
Wenn b = 0 then
ch: = ' '
sonst beginnen
b: = (b Shl 2) oder GetHalfNibble;
Wenn b = $F dann beginnen
b: = GetHalfNibble Shl 6;
b: = b oder GetHalfNibble Shl 4;
b: = b oder GetHalfNibble Shl 2;
b: = b oder GetHalfNibble;
ch: = Char(b);
anderes Ende
ch: = FreqChar [b];
Ende;
Wenn ch <> #0 dann St: = St + ch;
Bis ch = #0;
GetCompressedString: = St;
Ende;

Prozedur CompressString (St: String; Var Arr: tCompressedStringArray;
Var-Len: Integer);
{wandelt St in eine tCompressedStringArray der Länge Len}
Var
Ich: Integer;
UMSCHALT: Byte;

Prozedur OutHalfNibble(b: Byte);
beginnen
Arr [Len]: = Arr [Len] oder (b Shl Shift);
Wenn Shift = 0 dann beginnen
UMSCHALT: = 6;
Inc(len);
sonst dec(Shift,2) End;
Ende;

Prozedur OutChar(ch: Char);
Var
Ich: Byte;
Bych: Byte Absolute ch;
beginnen
Wenn ch = ' ' dann
OutHalfNibble(0)
sonst beginnen
Ich: = 4;
Während (ich < 15) und (FreqChar [i] <> ch) tun inc(i);
OutHalfNibble(i shr 2);
OutHalfNibble (i und 3);
Wenn ich = $F dann beginnen
OutHalfNibble (Bych Shr 6);
OutHalfNibble ((bych shr 4) und 3);
OutHalfNibble ((bych shr 2) und 3);
OutHalfNibble(bych and 3);
Ende;
Ende;
Ende;

beginnen
Len: = 1;
UMSCHALT: = 6;
fillChar(Arr,sizeof(Arr),0);
Für i: = 1 length(st) do OutChar(st[i]);
OutChar(#0); {Ende des komprimierten String signalisiert durch #0}
Wenn Shift = 6
dann dec(len);
Ende;

Ende.









Einfache Zeichenfolge Kompression


Einfache Zeichenfolge Kompression : Mehreren tausend Tipps, um Ihr Leben einfacher machen.


Eine einfache Routine, Zeichenfolgen zu komprimieren.

Autor: SWAG-SUPPORT-TEAM

{Sie nicht diese Art der Kompression von meine Routinen, aber hier erhalten
Sie sind sowieso. Beim Testen, erhalten Sie beste Komprimierung Wenn Sie
Verwenden Sie Englisch und längere Zeichenfolgen.
}
Einheit-Compress;

Schnittstelle

Const
CompressedStringArraySize = 500; {irren Sie auf der Seite der Großzügigkeit}

Typ
tCompressedStringArray = Array [als 1..CompressedStringArraySize] Byte;

Funktion GetCompressedString(Arr: tCompressedStringArray): String;

Prozedur CompressString (St: String; Var Arr: tCompressedStringArray;
Var-Len: Integer);
{wandelt St in eine tCompressedStringArray der Länge Len}

Umsetzung

Const
FreqChar: Array [4..14] von Char = 'Etaonirshdl';
{kann nicht in [0..3] sein, weil zwei leeren Bits einen Raum bedeuten}

Funktion GetCompressedString(Arr: tCompressedStringArray): String;
Var
UMSCHALT: Byte;
Ich: Integer;
ch: Char;
St: String;
b: Byte;

Funktion GetHalfNibble: Byte;
beginnen
GetHalfNibble: = (Arr [i] Shr Shift) und 3;
Wenn Shift = 0 dann beginnen
UMSCHALT: = 6;
Inc(i);
sonst dec(Shift,2) End;
Ende;

beginnen
St: = '';
Ich: = 1;
UMSCHALT: = 6;
Wiederholen Sie die
b: = GetHalfNibble;
Wenn b = 0 then
ch: = ' '
sonst beginnen
b: = (b Shl 2) oder GetHalfNibble;
Wenn b = $F dann beginnen
b: = GetHalfNibble Shl 6;
b: = b oder GetHalfNibble Shl 4;
b: = b oder GetHalfNibble Shl 2;
b: = b oder GetHalfNibble;
ch: = Char(b);
anderes Ende
ch: = FreqChar [b];
Ende;
Wenn ch <> #0 dann St: = St + ch;
Bis ch = #0;
GetCompressedString: = St;
Ende;

Prozedur CompressString (St: String; Var Arr: tCompressedStringArray;
Var-Len: Integer);
{wandelt St in eine tCompressedStringArray der Länge Len}
Var
Ich: Integer;
UMSCHALT: Byte;

Prozedur OutHalfNibble(b: Byte);
beginnen
Arr [Len]: = Arr [Len] oder (b Shl Shift);
Wenn Shift = 0 dann beginnen
UMSCHALT: = 6;
Inc(len);
sonst dec(Shift,2) End;
Ende;

Prozedur OutChar(ch: Char);
Var
Ich: Byte;
Bych: Byte Absolute ch;
beginnen
Wenn ch = ' ' dann
OutHalfNibble(0)
sonst beginnen
Ich: = 4;
Während (ich < 15) und (FreqChar [i] <> ch) tun inc(i);
OutHalfNibble(i shr 2);
OutHalfNibble (i und 3);
Wenn ich = $F dann beginnen
OutHalfNibble (Bych Shr 6);
OutHalfNibble ((bych shr 4) und 3);
OutHalfNibble ((bych shr 2) und 3);
OutHalfNibble(bych and 3);
Ende;
Ende;
Ende;

beginnen
Len: = 1;
UMSCHALT: = 6;
fillChar(Arr,sizeof(Arr),0);
Für i: = 1 length(st) do OutChar(st[i]);
OutChar(#0); {Ende des komprimierten String signalisiert durch #0}
Wenn Shift = 6
dann dec(len);
Ende;

Ende.


Einfache Zeichenfolge Kompression

Einfache Zeichenfolge Kompression : Mehreren tausend Tipps, um Ihr Leben einfacher machen.
Einfache Zeichenfolge Kompression
Wiezutun
Freunden empfehlen
  • gplus
  • pinterest

Kommentar

Einen Kommentar hinterlassen

Wertung