用zxing生成条形码,如果没对输入的内容进行判断校验码校验的话,就会报错

EAN-13商品条码中的校验符用字符集中的C子集表示,校验符的作用是检验前面12个数字是否正确,在条码机每次读入数据时,都会计算一次数据符的校验并与校验符进行比对。校验符的计算方法非常简单,将12个数据符从左起将所有的奇数位相加得出一个数a,将所有的偶数位相加得出一个数b,然后将数b乘以3再与a相加得到数c,用10减去数c的个位数,如果结果不为10则检验符为结果本身,如果为10则检验符为0。

示例

例如:690123456789

690表示国家代码:中华人民共和国

1234表示生产商代码

56789表示产品代码

计算其校验符的过程为:

奇数位和:6 + 0 + 2 + 4 + 6 + 8 = 26

偶数位和:9 + 1 + 3 + 5 + 7 + 9 = 34

将奇数位和与偶数位和的三倍相加:26 + 34 * 3 = 128

取结果的个位数:128的个位数为8

用10减去这个个位数:10 - 8 = 2

所以校验码为2

(注:如果取结果的个位数为0,那么校验码不是为10 (10 - 0 = 10),而是0。)

java 检验代码,true为条码符合规定,false反之

public static boolean checkStandardUPCEANChecksum(CharSequence s) throws FormatException {

int length = s.length();

if (length == 0) {

return false;

}

int sum = 0;

for (int i = length - 2; i >= 0; i -= 2) {

int digit = (int) s.charAt(i) - (int) '0';

if (digit < 0 || digit > 9) {

throw FormatException.getFormatInstance();

}

sum += digit;

}

sum *= 3;

for (int i = length - 1; i >= 0; i -= 2) {

int digit = (int) s.charAt(i) - (int) '0';

if (digit < 0 || digit > 9) {

throw FormatException.getFormatInstance();

}

sum += digit;

}

return sum % 10 == 0;

}

matlab zxing ean13,【zxing】Ean13 Contents do not pass checksum相关推荐

  1. MATLAB机器人工具箱【1】——建模+正逆运动学+雅克比矩阵

    MATLAB机器人工具箱[1]-- 机械臂建模+正逆运动学+雅克比矩阵 1. 二维空间位姿描述 2. 三维空间位姿描述 3. 建立机器人模型 3.1 Link 类 3.2 SerialLink 类 3 ...

  2. MATLAB机器人工具箱【3】—— 动力学相关函数及用法

    MATLAB机器人工具箱[3]-- 动力学相关函数及用法 1. 查看机器人动力学参数 2. 逆动力学 3. 正动力学 4. 机器人动力学方程 5. 赋予机器人动力学参数 本文在参考B站up主刘海涛大佬 ...

  3. matlab ezplot fplot,【转】Matlab plot fplot ezplot用法与区别

    [转]Matlab plot fplot ezplot用法与区别 (2012-04-19 20:26:00) 标签: matlab fplot ezplot 数学函数 曲线 杂谈 函数plot 是绘制 ...

  4. matlab 求加速度,【求助】位移转加速度(谱转换法)

    [求助]位移转加速度(谱转换法) 那啥,小弟初学matlab,比较菜 有这样一组数据(样本见附件) 0.3987 1.3757 -5.0000 -0.8385 0.3984 1.3759 -5.000 ...

  5. matlab在高等代数,【精选】MATLAB在高等代数中的应用.pdf

    [精选]MATLAB在高等代数中的应用 MATLAB 在高等代数中的应用 目 录 引言 3 1.向量组的线性相关性 4 2.线性方程组 5 3.相似矩阵及二次型 6 4. 用 Matlab求方阵A 的 ...

  6. 基于Halcon学习的一维码识别【十三】ean13.hdev

    读取EAN-13型条形码 总代码: *创建模板 create_bar_code_model ([], [], BarCodeHandle) CodeType := 'EAN-13' * dev_clo ...

  7. matlab 腐蚀算法,【zz】matlab 腐蚀膨胀算法

    1.图像膨胀的Matlab实现: 可以使用imdilate函数进行图像膨胀,imdilate函数需要两个基本输入参数,即待处理的输入图像和结构元素对象.结构元素对象可以是strel函数返回的对象,也可 ...

  8. 串联矩阵matlab代码,Matlab串联矩阵函数【horzcat】详细解析

    语法 C = horzcat(A,B) C = horzcat(A1,A2,-,An) 复制代码 输入参数 A - 第一个输入 标量 | 向量 | 矩阵 | 多维数组 | 表 | 时间表 第一个输入, ...

  9. matlab c++ 画图【转载】

    原文:http://blog.csdn.net/owldestiny/article/details/4210177 最近有朋友问我他照着我之前的一篇文章(http://blog.csdn.net/o ...

最新文章

  1. TCP/IP:IP选项处理
  2. [LeetCode]题解(python):087-Scramble String
  3. 【03】json使用
  4. Hadoop之DataNode工作机制
  5. #时间预测算法_【时间序列】时序预测竞赛之异常检测算法综述
  6. Java GC系列(1):Java垃圾回收简介
  7. 【JAVA 第三章 流程控制语句】课后习题 找零钱
  8. python将矩阵顺时针旋转90度_python 二维数组90度旋转的方法
  9. STM32f407---oled屏幕配套取字模软件使用
  10. Android基于XMPP Smack Openfire开发IM(1)搭建openfire服务器
  11. 软考高级系统分析师下午历年真题
  12. ubuntu主题美化
  13. Java Se 、JavaEE、JavaME区别
  14. 哪个软件测试上传速度最准,哪个软件测网速准确,360怎么测网速
  15. Github下载速度慢 提升github下载速度最新解决方案 跟龟速说拜拜(持续更新 保证方案可行 建议收藏)
  16. 义隆循环左移c语言,义隆单片机EM78PXXX的乘除的运算法
  17. mybatis错误——java.io.IOException Could not find resource comxxxxxxMapper.xml
  18. 一个 JDBC 实现对 mysql 进行分页查询的 实例
  19. heaps 和 priority queue堆和优先队列的定义和数据结构表示
  20. Q2复苏慢,华米科技的“两条腿”还行吗?

热门文章

  1. 微信小程序为电商插上翅膀
  2. 【OCP|052】OCP题库更新,052最新考题及答案整理-第10题
  3. 网络爬虫随记:2018-03-12启(refreshing)
  4. Linux命令解释之chown
  5. Java 网络教程: ServerSocket
  6. 在Linux环境下安装和配置phpmyadmin
  7. wireshark----教你如何抓包
  8. System Verilog线程——fork join的理解使用
  9. html简易幻灯片,用html5实现的简单幻灯片实例
  10. 微信小程序点击按钮弹出弹窗_转载 | 广东大学生就业创业微信小程序操作流程详解(一)...