Forum: Compiler & IDEs Aus 64bit unique 8bit machen


von Oddel (Gast)


Lesenswert?

moin,

hat Jemand eine Idee wie ich aus einer 64bit eindeutigen ID (1-wire) 
eine 8 bit ID machen könnte ?

gruß

von Bernhard R. (barnyhh)


Lesenswert?

Du definierst weitere Bit-Zustände außer '0' und '1'. Die ersten 
Kandidaten sind 'Blank' und 'kaputt'. Sobald für 1 Bit 256 Zustände 
definiert sind, ist das Ziel erreicht.

Bernhard

von Falk B. (falk)


Lesenswert?

@  Oddel (Gast)

>hat Jemand eine Idee wie ich aus einer 64bit eindeutigen ID (1-wire)
>eine 8 bit ID machen könnte ?

Mit einer Tabelle und 256 Einträgen zu 64 Bit. Dort schreibst du deine 
256 gewünschten IDs rein, der Index ist dann dein neuer 8 Bit Code.

Alternativ kann man eine 8 Bit CRC berechnen.

Klar sollte sein, dass der Informationgehalt von 64 Bit nicht 
vollständig auf 8 Bit abgebildet werden kann.

MFG
Falk

von Valentin B. (nitnelav) Benutzerseite


Lesenswert?

Wieso kannst du nicht einfach 8 8-Bit IDs senden?
Wäre doch viel einfacher.
Ansonsten könntest du natürlich bei (sehr) kleinen Stückzahlen auch 
einfach die ersten paar Ziffern weglassen...

Mit freundlichen Grüßen,
Valentin Buck

von Oddel (Gast)


Lesenswert?

Hallo Bernhard,

hört sich gut an , aber ich hab's ehrlich gesagt nicht verstanden.
Wenn ich zum Beispiel diese 64bit Zahl habe :

1100 1010 1111 0101 0110 1010 0111 0001 1111 0100 1110 0000 0101 1110 
0111 1100

ich möchte in einem Datenpaket eine eindeutige ID mitschicken, kann aber 
dafür nur 1 Byte übertragen.

gruß

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Ohne weitere den Datenumfang einschränkende Kriterien ist das 
schlichtweg nicht möglich; wie willst Du beliebige 64-Bit-Werte 
rekonstruierbar auf 8 Bit komprimieren? Mehr als 256 verschiedene Werte 
sind rein prinzipbedingt nicht möglich.

von Oddel (Gast)


Lesenswert?

ok,
dachte ich mir schon. Hatte aber doch noch die Hoffnung, dass es 
vielleicht einen Math. Weg geben könnte.

von (prx) A. K. (prx)


Lesenswert?

Oddel schrieb:

> dachte ich mir schon. Hatte aber doch noch die Hoffnung, dass es
> vielleicht einen Math. Weg geben könnte.

Gibt es. Für jede Kombination von maximal 256 verschiedenen bekannten 
1-Wire IDs gibt es einen mathematischen (algorithmischen) Weg, diese in 
8 Bits auszudrücken. Ob dir diese Erkenntnis hilft ist aber eine andere 
Frage, denn sobald du eines der bestehenden 1-Wire Device austauschen, 
und damit eine alte ID durch eine neue ersetzt wird, ändert sich dann 
auch dieser Weg.

NB: Das eben war Falks "Tabelle" auf mathematisch. ;-)

von Patrick (Gast)


Lesenswert?

Hm, die Frage ist doch, musst Du wirklich den kompletten Bereich 
abdecken?

Wenn ich mich richtig erinnere, waren die Dinger fortlaufend 
durchnumeriert, und der "Zuwachs" über die Zeit war durchaus 
überschaubar; ich persönlich hätte somit nur wenig Hemmungen, einfach 
die ersten 24 oder 32 Bit abzuschneiden. Das Abgeschnittene könnte man 
dann einfach ignorieren (die Wahrscheinlichkeit, dass zwei Devices mit 
in den hinteren 32 bzw. 40 Bits identischer Seriennummer im Bus hängen, 
ist wohl vernachlässigbar) oder gegen eine Konstante prüfen (Annahme: 
Alle Devices wurden mehr oder weniger zum gleichen Zeitpunkt angeschafft 
(hergestellt)).

Alternativ könnte man darüber nachdenken, zwei Tabellen für die jeweils 
z. B. vorderen und hinteren 32 Bits zu nehmen (und meinetwegen dann noch 
eine dritte Mapping Tabelle, die beide Indizies auf einen eindeutigen 
8-Bit-Wert mappt).

von Jan M. (mueschel)


Lesenswert?

Ein paar Bytes kann man bei 1-wire IDs durchaus einsparen, wenn man 
einige Annahmen macht:

- das obere Byte ist eine Prüfsumme - die kann problemlos entfernt 
werden, wenn man annimmt dass keine Übertragungsfehler auftreten.
- das untere Byte ist der Chiptyp - hat man nur eine Art von 1-wire Chip 
kann sie auch entfernt werden
- das 2. und 3. Byte von oben sind die höchstwertigen Bits der 
Seriennummer. Bei allen Chips die mir bisher untergekommen sind waren 
sie 0. Soll das Gerät nicht noch 10 Jahre unverändert kompatibel gebaut 
werden, kann man sie wegschneiden.
- wie Patrick schon schrieb, kauft man die Chips gleichzeitig, sind die 
Seriennummern sehr dicht beieinander und die Wahrscheinlichkeit dass 
Byte 4 und 5 bei allen identisch ist, ist sehr hoch.

Unter diesen Annahmen bleiben noch 3 Byte "effektive" ID übrig. Weitere 
Komprimierung wird schwierig ohne die schon erwähnten Look-up-Tabellen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.