EAN13

Introduction

JavaScript EAN13 code generator. DEMO

Use the code

ean13.js (main library)

V2EX Post

周末闲得没事干,偶然看见了一个包装袋上的条形码,觉得很有意思,之前写过一个PDF417的生成器,大体上原理差不多,这次用JavaScript写了段EAN13条形码的生成器,可以得到二进制码,从而进行Canvas绘图。

EAN13是European Article Number 13的缩写,正如其名,它拥有13位数字,是国际上普遍使用的商品标识码。

EAN13码的结构大体上是这样的:

前3位:国家码,我国可以使用的是690到699。

之后4位:生产商代码,如3943。

后5位:产品代码,如03457。

最后一位是生成的校验码,算法如下:

假设前12位是690123456789,遍历将奇数位和偶数位分别求和:

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

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

奇数位和和偶数位和的3倍相加,得到总和:

总和 = 奇数位和 + 偶数位和 * 3 = 26 + 34 * 3 = 128

取总和的个位数:

个位 = 总和 % 10 = 8

将10与个位相减,得到校验位:

校验位 = 10 - 个位 = 2

//注意:如果个位为0,校验位不是10 - 0 = 10而是0

我们可以使用判断但是这里有一个更好的算法就是将相减之后的数再除以10取余:

校验位 = (10 - 个位) % 10 = 2

这样我们就得到了整个EAN13码:6901234567892

接下来就是生成二进制的码。

生成二进制码的时候我们将第一位(e.g. 6)看作前置码,来决定使用的码集。

索引:

{

0: [0, 0, 0, 0, 0, 0],

1: [0, 0, 1, 0, 1, 1],

2: [0, 0, 1, 1, 0, 1],

3: [0, 0, 1, 1, 1, 0],

4: [0, 1, 0, 0, 1, 1],

5: [0, 1, 1, 0, 0, 1],

6: [0, 1, 1, 1, 0, 0],

7: [0, 1, 0, 1, 0, 1],

8: [0, 1, 0, 1, 1, 0],

9: [0, 1, 1, 0, 1, 0]

}

码集:

{

0: ["0001101", "0100111", "1110010"],

1: ["0011001", "0110011", "1100110"],

2: ["0010011", "0011011", "1101100"],

3: ["0111101", "0100001", "1000010"],

4: ["0100011", "0011101", "1011100"],

5: ["0110001", "0111001", "1001110"],

6: ["0101111", "0000101", "1010000"],

7: ["0111011", "0010001", "1000100"],

8: ["0110111", "0001001", "1001000"],

9: ["0001011", "0010111", "1110100"]

}

如果前置码是6,我们就用[0, 1, 1, 1, 0, 0]这个码集。

前6位码得到的二进制码就是:000101101001110110011001101101111010100011

同样后6位则是:100111010100001000100100100011101001101100

前面加上101起始符后面加上101终止符,前6位和后6位之间加上01010分隔符即可。

欢迎来访 jamesliu96@Github

Copyright (C) 2014 James Liu

欢迎转载,转载请署名。

License

The MIT License (MIT)

Copyright (c) 2014 James Liu j@jamesliu.info

Permission is hereby granted, free of charge, to any person obtaining a copy of

this software and associated documentation files (the "Software"), to deal in

the Software without restriction, including without limitation the rights to

use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of

the Software, and to permit persons to whom the Software is furnished to do so,

subject to the following conditions:

The above copyright notice and this permission notice shall be included in all

copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR

IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS

FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR

COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER

IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN

CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

ean13解码 matlab,ean13: EAN13 Code Generator相关推荐

  1. AS插件-Android Parcelable code generator.

    概述 生成实现了Parcelable接口的代码的插件 下载安装 1.在线安装 输入 Android Parcelable code generator ,点击安装即可,安装之后 重启,会看到上图选中部 ...

  2. 解决The code generator has deoptimised the styling of xxxx.js as it exceeds the max of 500kb

    解决The code generator has deoptimised the styling of xxxx.js as it exceeds the max of 500kb 1.需求背景 最近 ...

  3. Auto Code Generator

    Auto Code Generator 前言 一.基本介绍 二.详细介绍 1,通过File->LoadFile 加载excel 配置表格,表格内配置了各个配置项的参数 如下图. 2,File-& ...

  4. eclipse的jmr code generator插件

    eclipse的jmr code generator插件 您可以使用模板(类似jsp)从数据库生成java代码. 编写模板并根据自己的项目设置任务,而不改变项目. 例如,可以在几分钟内生成CRUD. ...

  5. Plugin error: Plugin ‘Android Code Generator‘ is compatible with IntelliJ IDEA only because it does

    目录 Plugin error: Plugin 'Android Code Generator' is compatible with IntelliJ IDEA only because it do ...

  6. matlab zxing ean13,【zxing】Ean13 Contents do not pass checksum

    用zxing生成条形码,如果没对输入的内容进行判断校验码校验的话,就会报错 EAN-13商品条码中的校验符用字符集中的C子集表示,校验符的作用是检验前面12个数字是否正确,在条码机每次读入数据时,都会 ...

  7. Vivado安装找不到matlab,vivado安装System Generator不支持新版Matlab怎么办?

    按照Xilinx的作风,Vivado只支持最近两年3个版本的Matlab,当前最新版vivado 2018.3只支持2017a,2017b,2018a,连matlab 2018b都不支持 System ...

  8. Html编码(#数字型)与解码小结 - 针对Puny Code(中文域名)的解码处理

    学习并了解到Html编码的知识,源于工作中的产品需求.如果一个URL里面包含Puny Code(不仅仅指中文,还可能是韩文等Unicode里非英文的国家文字,本文以含中文的URL为例),而且这个URL ...

  9. matlab:Invalid character code sequence detected

    在运行别人的工具包时,出现了如下的错误: Invalid character code sequence detected 百度得到的答案都是说路径中有中文.但是我的所有环境都是英文路径的来着.后来通 ...

最新文章

  1. 智能合约和区块链技术:入门指南
  2. kafka 重复消费和数据丢失_刨根问底,Kafka消息中间件到底会不会丢消息
  3. 手机单机游戏合集大概40个G
  4. Install Shield制作安装包技巧(SQL篇)
  5. 【转】深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第四节 参数传递对堆栈的影响 2
  6. 破解 IntelliJ IDEA 、免费注册方法、注册码
  7. QingStor NeonSAN跻身四强 新风口下的青云QingCloud正在厚积薄发
  8. linux系统内核参数命令,Linux内核启动参数解析及添加
  9. pyhton的切片操作
  10. 【算法笔记】:区间覆盖问题:贪心算法
  11. MSU 出品的 H.264 编码器比较 (2011.5)
  12. python中全部注释_python中的所有对象(学习注释1),Python,一切,皆,笔记
  13. u盘无法打开 计算机限制,u盘无法打开,教您U盘打不开常用修复方法
  14. 有shi以来被喷最多一篇,没想到呀!
  15. Day 3 (云计算-zsn)
  16. 2019年最新最全的医疗网站优化方案
  17. xv6 - lab0 - 实验环境
  18. GIS基础测量、地形分析、位置分析、空间分析功能介绍与实操应用
  19. 防御 CSS 黑客——介绍“安全的 CSS hacks”
  20. [陇剑杯2021] 复现

热门文章

  1. 宜家订单JSON_怎么评价宜家(IKEA)?
  2. c语言int作用,c语言中int的用法
  3. 微型计算机与显示器的线怎么,显示器与主机的连接线_显示器与主机怎么连接...
  4. 聚合API文档阅读帮助
  5. 【Go语言实战】—— 时间戳转标准输出格式,标准输出转时间戳,gorm查询标准化时间
  6. 现货黄金每天的开盘和收盘时间是几点
  7. 查看创表语句 SHOW CREATE TABLE t_idcard
  8. 金九银十!“68道 Redis+168道 MySQL”精品面试题(带解析),你背废了吗?
  9. Html form表单验证
  10. Latex转换成Word文档