读取GS1二维码,获取不带校验位字符的数据
Read GS1 QRcode and get the data without the check digit character
我正在尝试读取 GS1
格式的二维码。当我用值 0100145074001
为标识符 (01)
构建 QR 码时,我的 QRCode 生成器在末尾添加了一个校验位 9
。所以结果是:
01001450740019
现在,我尝试在我的 Java 程序中解析此 QRCode。我找到了这个库 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
是怎么用的。
我的问题是:如何在没有校验位的情况下获取 Java
中的 GS1 QRcode 的值?
我使用的库 (gs1Utils) 运行良好。
我最大的误解是 GS1 条形码原型在所有应用程序标识符 (AI) 中最后添加了校验位。但事实并非如此!
在我的例子中,GTIN 有 AI 01
并且校验位是根据这个 simple algorithm:
计算的
所以代码 0100145074001
有校验位 9
和 :
result.getString(ApplicationIdentifier.CONTAINED_GTIN)
returns 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));
您可以只读第一个字符,因为特定格式源自您的 QRCode 生成器。
使用result.getString(ApplicationIdentifier.CONTAINED_GTIN).substring(0, 13);
应该可以解决问题
但是,校验位可用于验证检查。值得加一个:
CheckDigit.validate(ApplicationIdentifier.CONTAINED_GTIN)
在某处排队,以避免将来出现输入问题;)
我正在尝试读取 GS1
格式的二维码。当我用值 0100145074001
为标识符 (01)
构建 QR 码时,我的 QRCode 生成器在末尾添加了一个校验位 9
。所以结果是:
01001450740019
现在,我尝试在我的 Java 程序中解析此 QRCode。我找到了这个库 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
是怎么用的。
我的问题是:如何在没有校验位的情况下获取 Java
中的 GS1 QRcode 的值?
我使用的库 (gs1Utils) 运行良好。
我最大的误解是 GS1 条形码原型在所有应用程序标识符 (AI) 中最后添加了校验位。但事实并非如此!
在我的例子中,GTIN 有 AI 01
并且校验位是根据这个 simple algorithm:
所以代码 0100145074001
有校验位 9
和 :
result.getString(ApplicationIdentifier.CONTAINED_GTIN)
returns 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));
您可以只读第一个字符,因为特定格式源自您的 QRCode 生成器。
使用result.getString(ApplicationIdentifier.CONTAINED_GTIN).substring(0, 13);
应该可以解决问题
但是,校验位可用于验证检查。值得加一个:
CheckDigit.validate(ApplicationIdentifier.CONTAINED_GTIN)
在某处排队,以避免将来出现输入问题;)