Считайте QR-код GS1 и получите данные без символа контрольной цифры

Я пытаюсь прочитать QR-код в GS1формат. Когда я построил QR-код для идентификатора(01) со значением 0100145074001, мой генератор QRCode добавляет в конце контрольную цифру 9. Итак, результат:

01001450740019

Теперь я пытаюсь разобрать этот QR-код в своей программе на Java. Я нашел эту библиотеку gs1Utils, и когда я выполняю следующее:

String brc = "0101001450740019";
ElementStrings.ParseResult result = ElementStrings.parse(brc); 
System.out.println("CONTAINED_GTIN= " + result.getString(ApplicationIdentifier.CONTAINED_GTIN));

я получил CONTAINED_GTIN= 01001450740019. Однако я хочу прочитать только0100145074001 а не контрольную цифру.

Я не знаю, работает ли эта определенная библиотека, или я неправильно понял, как GS1работает. Мой вопрос: как я могу получить значение QR-кода GS1 вJava без контрольной цифры?

3 ответа

Решение

Вы можете просто прочитать первые символы, поскольку конкретное форматирование исходит от вашего генератора QRCode.

С помощью result.getString(ApplicationIdentifier.CONTAINED_GTIN).substring(0, 13);Должен сделать трюк

Однако контрольную цифру можно использовать для проверки достоверности. Стоит добавить:

CheckDigit.validate(ApplicationIdentifier.CONTAINED_GTIN)

строка где-нибудь, чтобы избежать проблем с вводом в будущем;)

Библиотека, которую я использовал (gs1Utils), работает нормально.

Самым большим заблуждением, которое у меня было, было то, что прототип штрих-кода GS1 добавляет контрольные цифры в конце во все идентификаторы приложений (AI). Но это не так!

В моем случае в GTIN есть AI 01а контрольная цифра рассчитывается на основе этого простого алгоритма:

Итак, код 0100145074001 имеет контрольную цифру 9 и:

result.getString(ApplicationIdentifier.CONTAINED_GTIN)

возвращается 01001450740019.

Все мои коды имеют фиксированную длину (13). Итак, ответ на мой вопрос - прочитать первые 13 символов...

String myCode = result.getString(ApplicationIdentifier.CONTAINED_GTIN).substring(0, 13);

Вы можете использовать String.substring метод для получения требуемого символа из данной строки

System.out.println("CONTAINED_GTIN= " + result.getString(ApplicationIdentifier.CONTAINED_GTIN).substring(0, 13));
Другие вопросы по тегам