/ / Wie konvertiert man byte [] zurück in Barcode in ZXing - zxing

So konvertieren Sie Byte [] zurück zu Barcode in ZXing - zxing

ZXing.Result erhalten von ZXing.BarcodeReader bietet eine Eigenschaft von RawBytes von byte[]. Ich habe es versucht, konnte aber keine Funktion finden ZXing.BarcodeWriter was akzeptiert byte[] als sein Argument.

Ich möchte einen Barcode haben von ZXing.BarcodeWriter Das ist genau das Gleiche ZXing.BarcodeReader liest.

sagen wir, ein Barcode ist bekannt als Code 128,

BarcodeReader gibt RawBytes beginnt mit 3 Bytes, 105, 102, 42,

das bedeutet [Startcode C], [FNC 1], [42] in Code 128,

Das bedeutet, dass der Barcode mit 2 Ziffern beginnt 4, 2.

Der Hauptgrund, eine solche Funktion zu finden, besteht darin, dass Metadaten verloren gehen, wenn ein Barcode in konvertiert wird string und zurück konvertiert.

string stellt nur dar 4 und 2, und [Startcode C] und [FNC 1] sind verloren.

Gibt es dafür eine Funktion? Sie können davon ausgehen, dass das Barcode-Format bekannt ist.

Ich verwende ZXing.NET, aber ich nehme an, dass die Funktionen auf verschiedenen Plattformen ähnlich sind.

Antworten:

0 für die Antwort № 1

Es hängt vom Barcode-Typ ab, ob es sich um einen Code handeltMethode mit einem Byte-Array-Parameter ist verfügbar. Für den Aztec-Barcode können Sie die Klasse com.google.zxing.aztec.encoder.Encoder verwenden, die folgende Methode zur Verfügung stellt:

public static AztecCode encode(byte[] data)

Die Encoder-Klasse des QR-Codes bietet zum Beispiel keine encode-Methode mit einem Byte [].


0 für die Antwort № 2

Nein, es gibt keinen BarcodeWriter, der ein Byte-Array akzeptiert. Sie können jedoch eine Option festlegen, die die GS1-Symbologie interpretiert.

var reader = new BarcodeReader { Options = new DecodingOptions { AssumeGS1 = true } };

Der Barcodeleser konvertiert nun den FNC1Codewort zu einer Stringdarstellung im Ergebnis, in Ihrem Fall "] C142". Die FNC1-Darstellung "] C1" ist nicht sehr intuitiv, aber sie ist in der GS1-Spezifikation für Code 128 5.4.6.4 definiert. Jedes folgende FNC1-Codewort wird in das Gruppentrennzeichen (GS / 0x1D / (char) 29) übersetzt.

Der Barcode-Schreiber hingegen verwendet nurdas Gruppentrennzeichen. Das heißt, wenn Sie denselben Barcode aus der Ergebniszeichenfolge generieren möchten, müssen Sie das führende "] C1" durch "(char) 29" ersetzen.