/ / Як перетворити байт [] назад на штрих-код у ZXing - zxing

Як перетворити байт [] назад на штрих-код у ZXing - zxing

ZXing.Result отриманий з ZXing.BarcodeReader надає властивість RawBytes від byte[]. Однак я намагався, але не зміг знайти функцію в ZXing.BarcodeWriter який приймає byte[] як його аргумент.

Я хочу отримати штрих-код ZXing.BarcodeWriter яка точно така ж, як і ZXing.BarcodeReader читає

скажімо, штрих-код відомий як Код 128,

BarcodeReader дає RawBytes починається з 3 байтів 105, 102, 42,

що означає [початковий код C], [FNC 1], [42] у коді 128,

що означає, що штрих-код починається з 2 цифр 4, 2.

Основною причиною пошуку такої функції є те, що метадані втрачаються, якщо штрих-код перетворюється на string і повернув назад.

string лише репрезентує 4 і 2, і [Пусковий код C] і [FNC 1] втрачені.

Для цього є функція? Ви можете вважати, що формат штрих-коду відомий.

Я використовую ZXing.NET, але я вважаю, що функції схожі на різних платформах.

Відповіді:

0 для відповіді № 1

Це залежить від типу штрихкоду, якщо кодуватиМетод з параметром масиву байтів доступний. Для ацтеків-штрих-кодів ви можете використовувати клас com.google.zxing.aztec.encoder.Encoder, який забезпечує метод:

public static AztecCode encode(byte[] data)

Клас Encoder QR-Code, наприклад, не забезпечує метод кодування з байтом [].


0 для відповіді № 2

Ні, не існує BarcodeWriter, який приймає масив байтів. Але ви можете встановити параметр, який інтерпретує символіку GS1.

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

Считыватель штрих-кодів тепер перетворить FNC1кодове слово до строкового подання в результаті у вашому випадку "] C142". Представлення FNC1 "C1" не дуже інтуїтивно, але воно визначається в специфікації GS1 для коду 128 5.4.6.4. Кожне наступне кодове слово FNC1 перекладається на символ групового роздільника (GS / 0x1D / (char) 29).

З іншого боку, використовується тільки автор штрих-кодусимвольний сепаратор групи. Це означає, що якщо ви хочете створити той самий штрих-код з рядка результатів, то вам доведеться замінити провідну "" C1 "на" (char) 29 ".