条形码格式
条形码格式
- 简述
- EAN码
- EAN-13
- EAN-8
- UPC码
- UPC-A
- UPC-E
- CODE128
简述
EAN码
- EAN码(European Article Number)是国际物品编码协会制定的一种全球通用的商用条码。EAN码分为:标准版(EAN-13) 和 缩短版(EAN-8) 两种。EAN-13 由 12位数据 + 1位校验组成,EAN-8 由 7位数据 + 1位校验位组成。
EAN-13
- EAN13码由13位数字构成,第一位为前置码,最后一位为校验码。条码格式如下:
- 区域划分:
左侧空白区 | 起始符 | 左侧数据符 | 中间分隔符 | 右侧数据符 | 校验符 | 终止符 | 右侧空白区 |
---|---|---|---|---|---|---|---|
11个模块 | 3个模块 | 42个模块 | 5个模块 | 35个模块 | 7个模块 | 3个模块 | 7个模块 |
- 代码划分:
国家代码 | 厂商代码 | 产品代码 | 校验码 |
---|---|---|---|
3位数字 | 4位数字 | 5位数字 | 1位数字 |
- 编码解析:
-
左侧空白区:
位于条码的最左侧,其最小宽度为11个条形模块宽度 -
前置码:
前置码是不用条码符号表示的,功能是做为左侧数据符的编码设定之用。前置码是国家代码的第1位数字。 -
起始符:
位于左侧空白区的右侧,表示信息开始的特殊符号,由3个条形模块组成,逻辑为101(1代表细黑,0代表细白)。 -
左侧数据符:
位于起始符号右侧与中间分隔符左侧的一组条码字符。表示6位数字信息,由42个条形模块组成,每个数字对应7个条形模块。左侧数据符有A、B两类编码,通过前置码来选择左侧数据符选择的编码逻辑。
编码逻辑 :
前置码 | 编码方式 | 前置码 | 编码方式 |
---|---|---|---|
0 | AAAAAA | 1 | AABABB |
2 | AABBAB | 3 | AABBBA |
4 | ABAABB | 5 | ABBAAB |
6 | ABBBAA | 7 | ABABAB |
8 | ABABBA | 9 | ABBABA |
A、B类编码说明:
数字 | A类编码 | B类编码 |
---|---|---|
0 | 0001101 | 0100111 |
1 | 0011001 | 0110011 |
2 | 0010011 | 0011011 |
3 | 0111101 | 0100001 |
4 | 0100011 | 0011101 |
5 | 0110001 | 0111001 |
6 | 0101111 | 0000101 |
7 | 0111011 | 0010001 |
8 | 0110111 | 0001001 |
9 | 0001011 | 0010111 |
-
间分隔符:
位于左侧数据符的右侧,是平分条码字符的特殊符号,由5个条形模块组成,逻辑方式为01010(1代表细黑,0代表细白)。 -
右侧数据符:
位于中间分隔符右侧,校验符左侧的一组条码字符。表示5位数字信息的一组条码字符,由35个条形模块组成,每个数字对应7个条形模块。右侧数据符使用C类编码。
C类编码说明:
数字 | C类编码 |
---|---|
0 | 1110010 |
1 | 1100110 |
2 | 1101100 |
3 | 1000010 |
4 | 1011100 |
5 | 1001110 |
6 | 1010000 |
7 | 1000100 |
8 | 1001000 |
9 | 1110100 |
- 校验符:
位于右侧数据符的右侧,表示校验码的条码字符,由7个条形模块组成。
13位条码序号:
N1 | N2 | N3 | N4 | N5 | N6 | N7 | N8 | N9 | N10 | N11 | N12 | C |
---|
校验码计算规则:
C1 = N1 + N3 + N5 + N7 + N9 + N11;
C2 = (N2 + N4 + N6 + N8 + N10 + N12)*3;
CC = (C1 + C2)%10;
C = 10 - CC;
if(10 == C)
C = 0;
-
终止符:
位于条码符号校验符的右侧,表示信息结束的特殊符号,由3个条形模块组成,逻辑方式为101(1代表细黑,0代表细白)。 -
右侧空白区:
位于条码符号最右侧的与空的反射率相同的区域,其最小宽度为7个条形模块宽。为保护右侧空白区的宽度,可在条码符号右下角加“>”符号。
EAN-8
- EAN8条码由8位数字组成,3位国家代码+4位产品代码+1位校验码。
- 区域划分:
左侧空白区 | 起始符 | 左侧数据符 | 中间分隔符 | 右侧数据符 | 校验符 | 终止符 | 右侧空白区 |
---|---|---|---|---|---|---|---|
7个模块 | 3个模块 | 28个模块 | 5个模块 | 21个模块 | 7个模块 | 3个模块 | 7个模块 |
- 代码划分:
国家代码 | 产品代码 | 校验码 |
---|---|---|
3位数字 | 4位数字 | 1位数字 |
- 编码解析
EAN8使用的编码和EAN13的相同, 唯一的不同点是EAN8编码没有使用前置码来决定左资料码的编码格式。EAN8编码左资料编码使用的是A类编码。
UPC码
- 通用产品代码(Universal Product Code),通常简称UPC码,是美国均匀码理事会(Uniform Code Council, UCC)制定的一种商品条码,主要在美国及加拿大使用。在其基础之上发展起来的EAN码则已发展成为适用范围最广的通用条码。
- UPC码是美国统一代码委员会UCC制定的商品条码,它是世界上最早出现并投入应用的商品条码,在北美地区得以广泛应用。UPC码在技术上与EAN码 完全一致,它的编码方法也是模块组合法,也是定长、纯数字型条码。UPC码有5种版本,常用的商品条码版本为UPC-A码和UPC-E码。UPC-A码是 标准的UPC通用商品条码版本,UPC-E码为UPC-A的压缩版。
版本 | 应用对象 | 格式 |
---|---|---|
UPC-A | 通用商品 | SXXXXX XXXXXC |
UPC-B | 医药卫生 | SXXXXX XXXXXC |
UPC-C | 产业部门 | XSXXXXX XXXXXCX |
UPC-D | 仓库批发 | SXXXXX XXXXXCXX |
UPC-E | 商品短码 | XXXXXX |
注:S-系统码 X-资料码 C-检查码
UPC-A
- 概述:
UPC-A 条码是美国较常用也较被广泛认可的条码类型。它主要用于零售行业。UPC-A 由统一杂货产品代码委员会与 IBM 联合开发。 - 条形码组成
UPC-A 条码由 12 位组成。开头是个单数字系统字符,指示条码的分类方式:普通产品、加权项目、药物、优惠等。后面是个五位的制造商代码,接下来是个五位的产品代码,最后是个校验位。每位由不同宽度的两个条纹和两个空格的独有标识样式表示。除了数字之外,不能使用任何字母或其他特殊字符。条码格式如下:
- 区域划分:
左侧空白区 | 起始符 | 左侧数据符 | 中间分隔符 | 右侧数据符 | 校验符 | 终止符 | 右侧空白区 |
---|---|---|---|---|---|---|---|
9个模块 | 3个模块 | 42个模块 | 5个模块 | 35个模块 | 7个模块 | 3个模块 | 9个模块 |
- 代码划分:
系统字符 | 厂商代码 | 产品代码 | 校验码 |
---|---|---|---|
1位数字 | 5位数字 | 5位数字 | 1位数字 |
- 编码解析:
-
左侧空白区
位于条码的最左侧,其最小宽度为9个条形模块宽度 -
系统字符
开头是个单数字系统字符,指示条码的分类方式:普通产品、加权项目、药物、优惠等。 -
起始符
位于左侧空白区的右侧,表示信息开始的特殊符号,由3个条形模块组成,逻辑为101(1代表细黑,0代表细白)。 -
左侧数据符
位于起始符号右侧与中间分隔符左侧的一组条码字符。表示6位数字信息,由42个条形模块组成,每个数字对应7个条形模块。左侧数据符使用A类编码。 -
中间分隔符
位于左侧数据符的右侧,是平分条码字符的特殊符号,由5个条形模块组成,逻辑方式为01010(1代表细黑,0代表细白)。 -
右侧数据符
位于中间分隔符右侧,校验符左侧的一组条码字符。表示5位数字信息的一组条码字符,由35个条形模块组成,每个数字对应7个条形模块。右侧数据符使用C类编码。
A、C类编码说明:
数字 | A类编码 | C类编码 |
---|---|---|
0 | 0001101 | 1110010 |
1 | 0011001 | 1100110 |
2 | 0010011 | 1101100 |
3 | 0111101 | 1000010 |
4 | 0100011 | 1011100 |
5 | 0110001 | 1001110 |
6 | 0101111 | 1010000 |
7 | 0111011 | 1000100 |
8 | 0111011 | 1001000 |
9 | 0001011 | 1110100 |
- 校验符
位于右侧数据符的右侧,表示校验码的条码字符,由7个条形模块组成。
12位条码序号:
N1 | N2 | N3 | N4 | N5 | N6 | N7 | N8 | N9 | N10 | N11 | C |
---|
校验码计算规则
C1 = (N1 + N3 + N5 + N7 + N9 + N11)*3;
C2 = N2 + N4 + N6 + N8 + N10;
CC = (C1 + C2)%10;
C = (10 - CC)%10;
-
终止符
位于条码符号校验符的右侧,表示信息结束的特殊符号,由3个条形模块组成,逻辑方式为101(1代表细黑,0代表细白)。 -
右侧空白区
位于条码符号最右侧的与空的反射率相同的区域,其最小宽度为9个条形模块宽。
UPC-E
- 概述
UPC-E码又称UPC缩短码,是UPC-A码的简化模式,UPC-E商品条码不含中间的分隔符,从左到右是有左侧空白区、起始字符、数据字符、终止字符、右侧空白区,以及供人识别的字符组成。 - 条码的组成
UPC-E有8位数字构成 , 1位系统字符 + 6位数据字符 + 1位检验字符。条码格式如下:
- 区域划分:
左侧空白区 | 起始符 | 数据符 | 校验符 | 终止符 | 右侧空白区 |
---|---|---|---|---|---|
9个模块 | 3个模块 | 42个模块 | 7个模块 | 6个模块 | 9个模块 |
- 代码划分:
系统字符 | 数据字符 | 校验码 |
---|---|---|
1位数字 | 6位数字 | 1位数字 |
- 编码解析
- 左侧空白区
位于条码的最左侧,其最小宽度为9个条形模块宽度 - 系统字符
系统字符是不用条码符号表示的,系统字符不是 0 就是 1 。 - 起始符
位于左侧空白区的右侧,表示信息开始的特殊符号,由3个条形模块组成,逻辑为101(1代表细黑,0代表细白)。 - 数据符
数据符有6位数字信息,由42个条形模块组成,每个数字对应7个条形模块。数据符有A、B两类编码,通过校验码来选择数据符选择的编码逻辑。 - 校验码
校验码也不用条码符号表示,主要功能是用于数据字符的编码逻辑选择。 - 终止符
表示信息结束的特殊符号,由6个条形模块组成,逻辑为010101(1代表细黑,0代表细白)。 - 右侧空白区
位于条码的最右侧,其最小宽度为9个条形模块宽度
编码逻辑:
校验码 | 系统字符为 0 | 系统字符为 1 |
---|---|---|
0 | BBBAAA | AAABBB |
1 | BBABAA | AABABB |
2 | BBAABA | AABBAB |
3 | BBAAAB | AABBBA |
4 | BABBAA | ABAABB |
5 | BAABBA | ABBAAB |
6 | BAAABB | ABBBAA |
7 | BABABA | ABABAB |
8 | BABAAB | ABABBA |
9 | BAABAB | ABBABA |
A、B类编码说明:
数字 | A类编码 | B类编码 |
---|---|---|
0 | 0001101 | 0100111 |
1 | 0011001 | 0110011 |
2 | 0010011 | 0011011 |
3 | 0111101 | 0100001 |
4 | 0100011 | 0011101 |
5 | 0110001 | 0111001 |
6 | 0101111 | 0000101 |
7 | 0111011 | 0010001 |
8 | 0111011 | 0001001 |
9 | 0001011 | 0010111 |
- 校验位计算
- 先将UPC-E转换成UPC-A,在使用UPC-A校验码计算规则计算
CODE128
Code128编码的特性
- 具有A、B、C三种不同的编码类型,可提供标准ASCII中128个字元的编码使用
- 允许双向扫描(正着反着都能扫)
- 可自行决定是否加上检验位(但付款码必须要校验位)
- 条码长度可调,但包括开始位和结束位在内,不可超过232个字元(付款码也就十几二十位数字)
- 同一个128码,可以由A、B、C三种不同编码规则互换,既可扩大字元选择的范围,也可缩短编码的长度。
条形码格式
-
优先选用的编码规则
由于编码规则越复杂,二维码就越复杂,所以条形码编码优先使用的是Code128C这个编码规则。
CODE128C将数字两个两个组合在一起,大大减小了条码的复杂度。 -
CODE128的编码规则
为了方便表达,我们用b代表一条黑色像素宽度的线,s代表一条白色像素宽度的线,当bs组合时,中间不留任何缝隙
相关文章:

条形码格式
条形码格式 简述EAN码EAN-13EAN-8 UPC码UPC-AUPC-E CODE128 简述 EAN码 EAN码(European Article Number)是国际物品编码协会制定的一种全球通用的商用条码。EAN码分为:标准版(EAN-13) 和 缩短版(EAN-8&am…...
Java通过Redis进行延时队列,定时发布消息(根据用户选择时间进行发布)
前言 目前很多产品都用到过定时发布或者定时推送等功能,定时推送有两种定义,一种是后台自己有相关规则,通过定时器设置好相应的时间进行推送(例如定时任务框架QuartZ、xxl-job等实现,或者通过springboot自带定时任务Scheduled注解等实现)&am…...

从 0 搭建 Vite 3 + Vue 3 Js版 前端工程化项目
之前分享过一篇vue3+ts+vite构建工程化项目的文章,针对小的开发团队追求开发速度,不想使用ts想继续使用js,所以就记录一下从0搭建一个vite+vue3+js的前端项目,做记录分享。 技术栈 Vite 3 - 构建工具 Vue 3 Vue Router - 官方路由管理器 Pinia - Vue Store你也可以选择vue…...

【论文阅读笔记】Smil: Multimodal learning with severely missing modality
Ma M, Ren J, Zhao L, et al. Smil: Multimodal learning with severely missing modality[C]//Proceedings of the AAAI Conference on Artificial Intelligence. 2021, 35(3): 2302-2310.[开源] 本文的核心思想是探讨和解决多模态学习中的一个重要问题:在训练和测…...

在Windows系统上安装git-Git的过程记录
01-上git的官网下载git的windows安装版本 下载页面链接: https://git-scm.com/downloads 选择Standalone Installer的版本进行下载: 这里给大家一全git-2.43.0的百度网盘下载链接: https://pan.baidu.com/s/11HwNTCZmtSWj0VG2x60HIA?pwdut…...
qt QString常用方法
1. QString 尾部拼接,尾部插入字符.调用append()函数.同时,QString字符串直接用加号 也可以进行拼接. QString s "我的女神";s s "刘亦菲";s "最近可好?";s.append("你跑哪儿去了?");//拼接结果: 我的女神刘亦菲最近可好?你跑…...

吴恩达《机器学习》10-6-10-7:学习曲线、决定下一步做什么
一、学习曲线 1. 学习曲线概述 学习曲线将训练集误差和交叉验证集误差作为训练集实例数量(m)的函数绘制而成。这意味着从较少的数据开始,逐渐增加训练集的实例数量。该方法的核心思想在于,当训练较少数据时,模型可能…...

分子骨架跃迁工具-DiffHopp 评测
一、文章背景介绍 DiffHopp模型发表在ICML 2023 Workshop on Computational Biology(简称:2023 ICML-WCB)上的文章。第一作者是剑桥计算机系的Jos Torge。 DiffHopp是一个专门针对骨架跃迁任务而训练的E3等变条件扩散模型。此外,…...

MySQL双主双从数据库集群搭建
1 引言 在之前的文章中提到过相关搭建方法,具体请参考《MySQL主从数据库搭建》这篇文章,本文主要讲述双主双从,双主多从集群的搭建方式。 这里要问一个问题,为什么MySQL要搭建数据库集群呢?我想应该有以下几点原因&…...

vue实现动态路由菜单!!!
目录 总结一、步骤1.编写静态路由编写router.jsmain.js注册 2.编写permisstions.js权限文件编写permisstions.jsaxios封装的APIstore.js状态库system.js Axios-APIrequest.js axios请求实例封装 3.编写菜单树组件MenuTree.vue 4.主页中使用菜单树组件 总结 递归处理后端响应的…...

企业如何选择安全又快速的大文件传输平台
在现代信息化社会,数据已经成为各个行业的重要资源,而数据的传输和交换则是数据价值的体现。在很多场合,企业需要传输或接收大文件,例如设计图纸、视频素材、软件开发包、数据库备份等。这些文件的大小通常在几百兆字节到几十个字…...

springboot 自定义starter逐级抽取
自定义starter 背景:各个组件需要引入starter 还有自己的配置风格 –基本配置原理 (1)自定义配置文件 导入配置可以在配置文件中自动识别,提示 导入依赖后可以发现提示 (2)配置文件实现 –让配置文件对其他模块生…...

GAN:ImprovedGAN-训练GAN的改进策略
论文:https://arxiv.org/abs/1606.03498 代码:https://github.com/openai/improved_gan 发表:NIPS 2016 一、文章创新 1:Feature matching:特征匹配通过为生成器指定新目标来解决GANs的不稳定性,从而防止…...

docker限制容器内存的方法
在服务器中使用 docker 时,如果不对 docker 的可调用内存进行限制,当 docker 内的程序出现不可预测的问题时,就很有可能因为内存爆炸导致服务器主机的瘫痪。而对 docker 进行限制后,可以将瘫痪范围控制在 docker 内。 因此&#…...

阿里达摩院裁撤量子实验室
我是卢松松,点点上面的头像,欢迎关注我哦! 马云的达摩院也不搞量子计算了,因为缺钱,整体裁掉了达摩院量子实验室,把所有的设备都赠送给了浙江大学。 达摩院量子实验室:总共30个研究员…...
mysql数据库基础知识,Mysql的索引和主键区别,数据库的事务的基本特性
文章目录 数据库基础知识Mysql的索引和主键的区别数据库的事务的基本特性 数据库基础知识 为什么要使用数据库 数据保存在内存 优点: 存取速度快 缺点: 数据不能永久保存 数据保存在文件 优点: 数据永久保存 缺点:1…...

解决Vscode使用git提交卡住的问题
使用Vscode的git提交代码经常会很慢/卡住。 先点击左下角,进入设置 找到git的配置(建议直接搜索),把use Editor As commit input的勾选去掉即可解决。...
Linux C语言 32-网络编程之UDP例程
Linux C语言 32-网络编程之UDP例程 本节关键字:C语言 网络编程 UDP协议 套接字操作 服务端 客户端 相关C库函数:setsockopt, socket, bind, recvfrom, sendto, close 相关接口介绍 Linux C语言 30-套接字操作 例程执行任务说明 本例程中服务端的任务…...

ubuntu22.04系统下载程序和依赖,并拷贝到指定路径下
脚本1 apt install aptitude apt-get -d install xxx #xxx是待下载的安装包 mv /var/cache/apt/archives/* /home/tuners/1apt install aptitude apt-get -d install xxx mv /var/cache/apt/archives/*.deb /home/tuners/1 xxx 为程序包名称 /home/tuners/1为保存程序包的…...
Kafka KRaft 版本集群部署详细教程(附配置文件详细解释)
版本说明 Ubuntu 18.04.6Kafka 3.6.0JDK8 集群配置 操作系统ip域名Kafka Broker 端口Kafka Controller 端口Ubuntu 18.04.6192.168.50.131kafka1.com90929093Ubuntu 18.04.6192.168.50.132kafka2.com90929093Ubuntu 18.04.6192.168.50.133kafka3.com90929093 安装 vim, cur…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

STM32标准库-DMA直接存储器存取
文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
CSS设置元素的宽度根据其内容自动调整
width: fit-content 是 CSS 中的一个属性值,用于设置元素的宽度根据其内容自动调整,确保宽度刚好容纳内容而不会超出。 效果对比 默认情况(width: auto): 块级元素(如 <div>)会占满父容器…...

逻辑回归暴力训练预测金融欺诈
简述 「使用逻辑回归暴力预测金融欺诈,并不断增加特征维度持续测试」的做法,体现了一种逐步建模与迭代验证的实验思路,在金融欺诈检测中非常有价值,本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...

通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器
拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件: 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...
十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建
【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...