/ / Come convertire il byte [] in Barcode in ZXing - zxing

Come convertire byte [] di nuovo in codice a barre in ZXing - zxing

ZXing.Result ottenuto da ZXing.BarcodeReader fornisce una proprietà di RawBytes di byte[]. Tuttavia, ho provato ma non sono riuscito a trovare una funzione in ZXing.BarcodeWriter che accetta byte[] come argomento.

Voglio avere un codice a barre da ZXing.BarcodeWriter che è esattamente lo stesso di quello ZXing.BarcodeReader legge.

diciamo, un codice a barre è noto come codice 128,

BarcodeReaderRawBytes inizia con 3 byte, 105, 102, 42,

che significa [codice di avvio C], [FNC 1], [42] nel codice 128,

il che significa che il codice a barre inizia con 2 cifre 4, 2.

Il motivo principale per trovare una tale funzione è che i meta-dati vengono persi se viene convertito un codice a barre string e riconvertito.

string rappresenta solo 4 e 2e [Start Code C] e [FNC 1] sono persi.

C'è una funzione per questo? Si può presumere che il formato del codice a barre sia noto.

Sto usando ZXing.NET, ma suppongo che le funzioni siano simili su piattaforme diverse.

risposte:

0 per risposta № 1

Dipende dal tipo di codice a barre, se una codificail metodo con un parametro array di byte è disponibile. Per Aztec-Barcode è possibile utilizzare la classe com.google.zxing.aztec.encoder.Encoder che fornisce il metodo:

public static AztecCode encode(byte[] data)

La classe Encoder del QR-Code, ad esempio, non fornisce un metodo di codifica con un byte [].


0 per risposta № 2

No, non esiste BarcodeWriter che accetta un array di byte. Ma puoi impostare un'opzione che interpreti la simbologia GS1.

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

Il lettore di codici a barre convertirà ora l'FNC1codice in una rappresentazione stringa nel risultato, nel tuo caso "] C142". La rappresentazione FNC1 "] C1" non è molto intuitiva, ma è definita nelle specifiche GS1 per il codice 128 5.4.6.4 Ogni codice seguente FNC1 viene tradotto nel carattere separatore di gruppo (GS / 0x1D / (char) 29).

D'altra parte, lo scrittore di codici a barre usa soloil carattere separatore di gruppo. Ciò significa che se si desidera generare lo stesso codice a barre dalla stringa del risultato, è necessario sostituire "C1" principale con "(char) 29".