Registriert seit: 4. Apr 2008
400 Beiträge
|
AW: 2 Bytes zu einem komprimieren
15. Apr 2011, 10:57
So ähnlich.
Das Byte Array representiert eine Unique ID des Systems. Z.B per MAC oder Festplattenseriennummer.
Die Länge kann nicht geändert werden. Es müssen 8 Bytes bleiben damit man mit älteren Version kompatibel bleibt.
Ürsprünglich war gar keine Checksum oder Infos in den 8 Bytes.
Dann ist einmal eine 2 Byte Checksum dazu gekommen. (Dadurch ist die mindest App-Version feststellbar)
Nun möchte ich die Infos noch erweitern. Z.B. um eine Author ID.
Author ID ich selbst: $11
Author ID irgend ein anderer: $12
...
..
.
Will man die Erkennung nun hinzufügen ist ja eine zusätzliche Checksum erforderlich. Ansonsten kann es Zufall sein, dass genau in Byte[4] ein $11 steht und fälschlicherweise eine Author ID angenommen wird. Also eine z.B. XOR Checksum der Bytes[0..4] in Byte[5] speichern. Stimmt diese kann man sagen das Byte[4] eine Author ID ist.
Ich habe zuerst auch überlegt ob man mit 8 Bit auskommt.
Das würde aber nur z.B. 2^4 IDs und für die Checksum 2^4 Bits zulassen.
16 IDs sind mir zuwenig. 128 IDs sollten es schon sein. Dann bleibt aber nur mehr 1 Bit für die Checksum -> nicht sicher genug.
Somit werden 2 Bytes benötigt.
Man könnte aber auch 7 Bits ID und 5 Bits Checksum = 12Bits (1 1/2 Bytes) verwenden.
Liese sich das dann in 8 Bit komprimieren?
Delphi 2010, Update 4 & 5
|