/ Ako previesť byte [] späť na čiarový kód v ZXing - zxing

Ako previesť byte [] späť na čiarový kód v ZXing - zxing

ZXing.Result získané od ZXing.BarcodeReader poskytuje majetok spoločnosti RawBytes z byte[], Snažil som sa, ale nebol schopný nájsť funkciu ZXing.BarcodeWriter ktorý akceptuje byte[] ako jeho argument.

Chcem mať čiarový kód od ZXing.BarcodeWriter čo je presne to isté ZXing.BarcodeReader číta.

napríklad, čiarový kód je známy ako kód 128,

BarcodeReader poskytuje RawBytes začína 3 bajty, 105, 102, 42,

čo znamená [Štartový kód C], [FNC 1], [42] v kóde 128,

čo znamená, že čiarový kód začína dvoma číslicami 4, 2.

Hlavným dôvodom na nájdenie takejto funkcie je, že metadata sa stratí, ak sa prevedie čiarový kód string a previesť späť.

string predstavuje iba 4 a 2, a [Štartový kód C] a [FNC 1] sú stratené.

Je na tom funkcia? Môžete predpokladať, že je známy formát čiarového kódu.

Používam ZXing.NET, ale predpokladám, že funkcie sú podobné v rôznych platformách.

odpovede:

0 pre odpoveď č. 1

Závisí od typu čiarového kódu, ak je kódovanýje k dispozícii metóda s parametrom poľa bajtov. Pre Aztec-Barcode môžete použiť triedu com.google.zxing.aztec.encoder.Encoder, ktorý poskytuje metódu:

public static AztecCode encode(byte[] data)

Trieda kódov kód QR-Code napríklad neposkytuje kódovú metódu s bajtom [].


0 pre odpoveď č. 2

Nie, nie je BarcodeWriter, ktorý akceptuje bajtové pole. Môžete však nastaviť možnosť interpretácie symbolu GS1.

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

Čítačka čiarových kódov teraz prevedie FNC1kódové slovo na reťazec vo výsledku vo vašom prípade "] C142". FNC1 reprezentácia "] C1" nie je veľmi intuitívne, ale je definovaná v špecifikácii GS1 pre kód 128 5.4.6.4 Každé nasledujúce kódové slovo FNC1 je preložené do znaku separátora skupiny (GS / 0x1D / (char) 29).

Spisovateľ čiarového kódu na druhej strane používa ibaznak separátora skupiny. To znamená, že ak chcete vygenerovať rovnaký čiarový kód z výsledného reťazca, musíte nahradiť vedúci "] C1" znakom "(char) 29".