/ / Jak przekonwertować bajt [] z powrotem na kod kreskowy w ZXing - zxing

Jak przekonwertować bajt [] z powrotem na kod kreskowy w ZXing - zxing

ZXing.Result uzyskany z ZXing.BarcodeReader zapewnia właściwość RawBytes z byte[]. Próbowałem, ale nie mogłem znaleźć funkcji ZXing.BarcodeWriter który akceptuje byte[] jako jego argument.

Chcę mieć kod kreskowy z ZXing.BarcodeWriter co jest dokładnie takie samo ZXing.BarcodeReader czyta.

powiedzmy, kod kreskowy jest znany jako Kod 128,

BarcodeReader daje RawBytes zaczyna się od 3 bajtów, 105, 102, 42,

co oznacza [Kod Startu C], [FNC 1], [42] w Kodzie 128,

co oznacza, że ​​kod kreskowy zaczyna się od 2 cyfr 4, 2.

Głównym powodem znalezienia takiej funkcji jest utrata metadanych, jeśli kod kreskowy zostanie przekonwertowany string i przekonwertowane z powrotem.

string reprezentuje tylko 4 i 2i [Kod początkowy C] i [FNC 1] zostaną utracone.

Czy istnieje do tego funkcja? Możesz założyć, że format kodu kreskowego jest znany.

Używam ZXing.NET, ale przypuszczam, że funkcje są podobne na różnych platformach.

Odpowiedzi:

0 dla odpowiedzi № 1

Zależy od typu kodu kreskowego, jeśli jest kodowanymetoda z parametrem tablicy bajtowej jest dostępna. W przypadku kodu Aztec-Barcode można użyć klasy com.google.zxing.aztec.encoder.Encoder, która zapewnia metodę:

public static AztecCode encode(byte[] data)

Klasa Encoder z QR-Code na przykład nie dostarcza metody kodowania z bajtem [].


0 dla odpowiedzi nr 2

Nie, nie ma BarcodeWriter, który akceptuje tablicę bajtów. Ale możesz ustawić opcję, która interpretuje symbolikę GS1.

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

Czytnik kodów kreskowych przekształci teraz FNC1słowo kodowe do reprezentacji łańcuchowej w wyniku, w twoim przypadku "] C142". Reprezentacja FNC1 "] C1" nie jest bardzo intuicyjna, ale jest zdefiniowana w specyfikacji GS1 dla kodu 128 5.4.6.4 Każde kolejne słowo kodowe FNC1 jest tłumaczone na znak separatora grupy (GS / 0x1D / (char) 29).

Pisarz kodów kreskowych z drugiej strony używa tylkoznak separatora grupy. Oznacza to, że jeśli chcesz wygenerować ten sam kod kreskowy z ciągu wynikowego, musisz zastąpić wiodący "] C1" z "(char) 29".