UPC-Barcodes bestehen aus einer Reihe von schwarzen und weißen Balken. Die Breite der Balken kann zwischen 1 und 4 liegen (1 ist die dünnste und 4 die dickste). Jede Ziffer von 0 bis 9 wird mit genau 4 Strichen codiert:
Digit | Bar Thickness Sequence
0 | 3-2-1-1
1 | 2-2-2-1
2 | 2-1-2-2
3 | 1-4-1-1
4 | 1-1-3-2
5 | 1-2-3-1
6 | 1-1-1-4
7 | 1-3-1-2
8 | 1-2-1-3
9 | 3-1-1-2
Wie wurden die Strichbreiten den Nummern 0 bis 9 zugeordnet? Ich bemerke, dass jede Serie von 4 Takten 7 ergibt, aber ansonsten sehe ich kein offensichtliches Muster.
(Hinweis: Die Zahlen, die ein UPC-Barcode codiert, können spezielle Bedeutungen haben (Produktklassifizierung, Hersteller, Prüfsumme usw.). Bei dieser Frage geht es nur darum, wie die Strichbreiten (die Barcode-Codierung) abgeleitet wurden.
Hier ist eine der Referenzen, die ich gefunden habe: Alles über UPC Barcode & EAN Barcode
4-6
würde eine Verschiebung um zwei eine Null ergeben (meine Schlussfolgerung, ein solcher Verschiebungsfehler war also kein Problem).Antworten:
@hazzey ist auf dem richtigen Weg. Dies ist eine Art Umkehrung des Gray-Codes , bei dem es darum ging, fehlerhafte Daten während der Metazustände des Encoders zu vermeiden. Da ein Barcode statisch ist, möchten wir die Signaldifferenz zwischen allen Werten und nicht nur zwischen Nachbarn maximieren und den physischen Gesamtraum minimieren - daher der Mangel an "4" -Breiten.
Ich möchte darauf hinweisen, dass heute eine Reihe verschiedener Implementierungen im Einsatz sind.
quelle
Nur eine Beobachtung, aber zuerst einmal gibt es nur 20 Kombinationen von 1-4, die zu 7 addieren, dh die eine Hälfte wird verwendet und die andere Hälfte ist ungültig.
Jeder Ein-Bit-Fehler (Ein Balken wird als zu breit oder zu eng gelesen) wäre ein offensichtlicher Fehler, da die Sequenz nicht mehr zu 7 summiert wird.
Eine Ein-Bit- Verschiebung , dh ein Balken, der zu breit und eines der benachbarten Leerzeichen entsprechend zu schmal gelesen wird, würde zu 7 addieren und als gültig erscheinen. Wenn Sie sich jedoch die für die Verwendung ausgewählten Sequenzen ansehen, werden Sie feststellen, dass jede mögliche Verschiebung zu diesem Ergebnis führt in einer unbenutzten Reihenfolge und würde so als Fehler identifiziert. (Beispiel wenn
2-1-2-2
als1-2-2-2
oder gelesen wurde2-2-1-2
oder2-1-3-1
das wäre ein Fehler).Das sagt natürlich nichts darüber aus, wie die spezifische Reihenfolge für die Nummernzuordnung hergestellt wurde.
quelle