AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

2 Bytes zu einem komprimieren

Ein Thema von schwa226 · begonnen am 14. Apr 2011 · letzter Beitrag vom 15. Apr 2011
Antwort Antwort
Seite 1 von 2  1 2      
schwa226

Registriert seit: 4. Apr 2008
400 Beiträge
 
#1

2 Bytes zu einem komprimieren

  Alt 14. Apr 2011, 08:11
Hi,

ich möchte gerne 2 Bytes in 1 Byte komprimieren.
Geht das? Oder besser gefragt, geht das einfach?

Ohne das man ZLib verwenden muss. Also einfach ein kleiner Algo?

Danke!
Delphi 2010, Update 4 & 5
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: 2 Bytes zu einem komprimieren

  Alt 14. Apr 2011, 08:18
Hi,

ich möchte gerne 2 Bytes in 1 Byte komprimieren.
Geht das? Oder besser gefragt, geht das einfach?

Ohne das man ZLib verwenden muss. Also einfach ein kleiner Algo?

Danke!
Nein

Um es mal sehr vereinfacht darzustellen, wie das mit dem Komprimieren funktioniert:

Code:
aa aa aa aa aa aa aa aa aa ff ff ff ff ff cc cc cc cc cc
Komprimiert
Code:
09 aa 05 ff 05 cc
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von mleyen
mleyen

Registriert seit: 10. Aug 2007
609 Beiträge
 
FreePascal / Lazarus
 
#3

AW: 2 Bytes zu einem komprimieren

  Alt 14. Apr 2011, 08:21
50% Kompression in 100% aller Zustände? Unmöglich.
Das wäre ja als wenn man versucht 2 Bit in eins zu quetschen.
  Mit Zitat antworten Zitat
schwa226

Registriert seit: 4. Apr 2008
400 Beiträge
 
#4

AW: 2 Bytes zu einem komprimieren

  Alt 14. Apr 2011, 08:26
Ok, Danke!

Ich habe nähmlich nur eine begrenzte Anzahl an Bytes die ich übergebe und ich wollte sie besser Ausnützen. Schade...
Delphi 2010, Update 4 & 5
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#5

AW: 2 Bytes zu einem komprimieren

  Alt 14. Apr 2011, 09:07
Der RunLength Algorithmus wie ihn SirRufio gezeigt hat, ist wohl der einfachste verfügbare, der aber bei kleinen gemischen Daten eher mehr Output erzeugt.

Falls der Inhalt der Daten bekannt und veränderbar ist, wäre eine Möglichkeit Boolsche Bytes in Bits zu fassen und je nach Range Hi/Lo Nibble zu nutzen. Auch bei reinen reine ASCII-Texten lässt sich 30% sparen
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#6

AW: 2 Bytes zu einem komprimieren

  Alt 14. Apr 2011, 09:15
gibt es einen eingeschränkten Wertebereich für Deine Bytes?
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
schwa226

Registriert seit: 4. Apr 2008
400 Beiträge
 
#7

AW: 2 Bytes zu einem komprimieren

  Alt 14. Apr 2011, 09:37
Es ist ein Array[0..7] of Byte.

Byte[6] und Byte[7] fallen schon einmal weg da dort eine Checksumme der ersten 6 Bytes drinnen ist.
Die 6 Bytes werden benutzt um die (unique) ID festzustellen.

Nun möchte ich die Informationen noch erweitern.
Also Byte[5] für andere Informationen nutzen.
Somit verkürzt sich die ID schon um 1 Byte.

Wenn ich es nicht komprimieren kann verkürzt sich die ID um 2 Bytes und es bleiben "nur noch" 4 Bytes übrig. (1 Byte Infos, 1 Byte Checksum)

Also von 2^48 verkürzt auf 2^32.

Ist noch nicht so dragisch, aber wenn ich noch mehr Informationen reinpacken will bleiben noch weniger Bytes für die ID.

Der Bereich der Bytes wird voll genützt, $00-$FF.
Delphi 2010, Update 4 & 5
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: 2 Bytes zu einem komprimieren

  Alt 14. Apr 2011, 09:49
Guten Morgen,

wenn Du den Inhalt des Array beliebig bestimmen kannst, so scheint es wenigstens,
warum kannst Du dann nicht über die Größe des Arrays bestimmen
und das Array entsprechend erweitern um diese Zusatzinfos unterzubringen.

.. und die Checksumme weglassen - ist nicht die feine Art

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#9

AW: 2 Bytes zu einem komprimieren

  Alt 14. Apr 2011, 09:58
Wo kommt die Unique-ID denn her und wieviele verschiedene IDs sind denn so zu erwarten? Immerhin kann man mit vier Byte schon ca. zwei Milliarden IDs codieren.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: 2 Bytes zu einem komprimieren

  Alt 14. Apr 2011, 11:26
ich möchte gerne 2 Bytes in 1 Byte komprimieren.
Geht das?
ja eventuell

Also wenn die Bytes nicht vollständig ausgenutzt werden, dann ja.

Werden z.B. in jedem Byte nur Werte von 0 bis 15 gespeichert, dann kann man alle Zustände beider bytes in einem Byte abbilden.
Und das ist es, was komprimierungen versuchen ... sie suchen Gemeinsamkeiten/Abhängigkeiten von Bytes und brauchen so nicht alle Werte speichern, sondern nur die kleineren Informationen der Abhängigkeiten.
$2B or not $2B
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz