Для Code128 нет единого правильного ответа. Если вы используете Code128-A, вы можете получить результат, отличный от Code128-C. Под результатом я имею в виду, как это выглядит. Возьмите "803150" в качестве примера. В Code128-A вам понадобится 6 символов (+ начало, контрольная сумма, стоп), чтобы представить это число. Code128-C состоит только из цифр, поэтому вы можете сжать две цифры в один символ. Следовательно, вам нужно всего 3 символа (+ начало, контрольная сумма, стоп), чтобы обозначить одно и то же число. Штрих-коды будут выглядеть по-разному (в данном случае A длиннее), но если вы отсканируете их оба, вы получите правильный номер.
Кроме того, Code128 не обязательно должен быть просто A, B или C. Вы можете фактически комбинировать различные подмножества. Это характерно для случаев, подобных «US123457890», где Code128-A или B используется для «US», а Code128-C используется для оставшихся цифр. Это иногда называют Code-128 Auto или просто Code-128. В результате получается «сжатый» штрих-код с точки зрения ширины. Вы можете представить те же данные с помощью A / B, но, опять же, это даст вам более длинный штрих-код.
Возьмите два онлайн-генератора:
Я рекомендую первый, где вы можете выбрать между Auto / A / B / C. Вот пример изображения, иллюстрирующего различия:
В IDAutomation Auto используется по умолчанию, в то время как A по умолчанию для Barcodes-Inc. Оба являются правильными, вам просто нужно быть осторожным, какое подмножество вы выбрали при сравнении результатов. Я также рекомендую сканер штрих-кода для использования в разработке, чтобы проверить вывод. Также см. на этой странице для сравнения различных подмножеств со значениями ASCII. Я также нахожу полезным grandzebu.net , у которого есть бесплатный шрифт Code128, который вы также можете использовать.
Похоже, ваша библиотека Delphi всегда использует Code128-C, поскольку в этом подмножестве можно представлять только числа.