https://blog.csdn.net/walk_ing/article/details/52712641 参考链接

1,具有A、B、C三种不同的编码类型,可提供标准ASCII中128个字元(字元,我理解的就是字符)的编码使用

2,每一个字符占11个单位表示,代码中用两个byte表示(取后11位bit)

3,Code128 字符表中有些控制字符,比如CodeA表示此字段下一个个块临时使用Code128A的字符表中的字符。

//code128编码值数组,,每一个字符占11个单位表示,代码中用两个byte表示(取后11位bit)
static uint16_t s_code128_encode_set[] ={
0x6cc,0x66c,0x666,0x498,0x48c,0x44c,0x4c8,0x4c4,0x464,0x648,
0x644,0x624,0x59c,0x4dc,0x4ce,0x5cc,0x4ec,0x4e6,0x672,0x65c,
0x64e,0x6e4,0x674,0x76e,0x74c,0x72c,0x726,0x764,0x734,0x732,
0x6d8,0x6c6,0x636,0x518,0x458,0x446,0x588,0x468,0x462,0x688,
0x628,0x622,0x5b8,0x58e,0x46e,0x5d8,0x5c6,0x476,0x776,0x68e,
0x62e,0x6e8,0x6e2,0x6ee,0x758,0x746,0x716,0x768,0x762,0x71a,
0x77a,0x642,0x78a,0x530,0x50c,0x4b0,0x486,0x42c,0x426,0x590,
0x584,0x4d0,0x4c2,0x434,0x432,0x612,0x650,0x7ba,0x614,0x47a,
0x53c,0x4bc,0x49e,0x5e4,0x4f4,0x4f2,0x7a4,0x794,0x792,0x6de,
0x6f6,0x7b6,0x578,0x51e,0x45e,0x5e8,0x5e2,0x7a8,0x7a2,0x5de,
0x5ee,0x75e,0x7ae,0x684,0x690,0x69c,0x18EB
};

#define CODE128_MEX_LEN 30
static uint16_t code128_temp[CODE128_MEX_LEN] = {0};
#define CODE128_ONE_ELEMENT_SIZE 11

STATUS_TYPE code128C_encode(const uint8_t *src,uint8_t length,uint8_t *out)
{
int i = 0;
int j = 0;
uint8_t chr_temp = 0;
uint32_t check_digit = 0;
uint16_t *p_out = code128_temp;
memset(code128_temp,0,CODE128_MEX_LEN);

p_out[0] = 0x69c;
p_out++;
check_digit += 105;

for(i = 0,j = 0;i < length;i += 2,j++ )
{
if(src[i] < '0' || src[i] > '9' || src[i+1] < '0' || src[i+1] > '9')
{
return STATUS_INVALID_CHAR;
}

chr_temp = (src[i] - '0')*10 + src[i + 1] - '0';
check_digit += (j + 1)*chr_temp;

p_out[j] = s_code128_encode_set[chr_temp];

}

check_digit %=103;

p_out[j] = s_code128_encode_set[check_digit];
p_out[j+1] = 0x18EB;

return STATUS_OK;
}

 

上面的代码实现,对照 Code128编码表 去看,很容易看懂了。

附录:网上的编码值都是表示成:bbsbbssbbss,需要转换成对应的数值:0x6cc,通过计算器去转太麻烦了,而且还容易出错,所以,写了个MFC dialog程序去做(很简单)。

可以去“文件”页下载(code128_convert.rar

code128 C语言实现的更多相关文章

  1. C#-利用ZPL语言完毕条形码的生成和打印

     近期由于公司项目的须要,研究了一项对我来说算是新的技术-条形码的生成和打印.由于之前没有接触过这方面的知识,所以刚開始还有点小迷茫和小兴奋,只是一步一步来,问题总会解决的.如今来总结一下做条形码 ...

  2. C# vb .NET读取识别条形码线性条码code128

    code128是比较常见的条形码编码规则类型的一种.如何在C#,vb等.NET平台语言里实现快速准确读取该类型条形码呢?答案是使用SharpBarcode! SharpBarcode是C#快速高效.准 ...

  3. C语言 · 高精度加法

    问题描述 输入两个整数a和b,输出这两个整数的和.a和b都不超过100位. 算法描述 由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储.对于这种问题,一般使用数组来处理. 定义一个数组A ...

  4. Windows server 2012 添加中文语言包(英文转为中文)(离线)

    Windows server 2012 添加中文语言包(英文转为中文)(离线) 相关资料: 公司环境:亚马孙aws虚拟机 英文版Windows2012 中文SQL Server2012安装包,需要安装 ...

  5. iOS开发系列--Swift语言

    概述 Swift是苹果2014年推出的全新的编程语言,它继承了C语言.ObjC的特性,且克服了C语言的兼容性问题.Swift发展过程中不仅保留了ObjC很多语法特性,它也借鉴了多种现代化语言的特点,在 ...

  6. C语言 · Anagrams问题

    问题描述 Anagrams指的是具有如下特性的两个单词:在这两个单词当中,每一个英文字母(不区分大小写)所出现的次数都是相同的.例如,"Unclear"和"Nuclear ...

  7. C语言 · 字符转对比

    问题描述 给定两个仅由大写字母或小写字母组成的字符串(长度介于1到10之间),它们之间的关系是以下4中情况之一: 1:两个字符串长度不等.比如 Beijing 和 Hebei 2:两个字符串不仅长度相 ...

  8. JAVA语言中的修饰符

    JAVA语言中的修饰符 -----------------------------------------------01--------------------------------------- ...

  9. Atitit 项目语言的选择 java c#.net  php??

    Atitit 项目语言的选择 java c#.net  php?? 1.1. 编程语言与技术,应该使用开放式的目前流行的语言趋势1 1.2. 从个人职业生涯考虑,java优先1 1.3. 从项目实际来 ...

随机推荐

  1. DOM 扩展

    1.选择符API,selectors API 可以使用CSS选择符匹配查找节点 1)  querySelector(selector),接受一个CSS选择符,返回调用该函数的节点后代中第一个匹配的元素 ...

  2. 【笔记】计算机原理,网络,Linux操作系统

    一,计算机原理 1,化繁为简的思想,产生二进制,产生把所有计算归结为加法运算 二,网络 1,分层思想,产生ISO七层协议,商用了TCP/IP的五层协议 三,Linux操作系统 1,分层思想,硬件-&g ...

  3. Jmeter连接MySQL和SQL Server配置(转载)

    在使用jmeter做性能或自动化测试的时候,往往需要直接对数据库施加压力,或者某些参数只能从数据库获取,这时候就必须使用jmeter连接数据库. 2 下载对应的驱动包 mysql驱动: (mysql- ...

  4. phpexcel获取excel表格内容

    excel表格式: 代码: $objPHPExcel=PHPExcel_IOFactory::load($excelFilePath);//$file_url即Excel文件的路径 $sheet=$o ...

  5. 网络文件系统NFS

    NFS介绍 什么是NFS? NFS是Network File System的缩写,即网络文件系统.它的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录.NFS客户端(一般为应用 ...

  6. FortiGate日常检查

    1.1)CPU利用率:由于防火墙有芯片,正常的流量都走芯片转发,不走cpu,只有开了utm相关的应用层防护功能和DDOS之类的,才会走cpu,所以一般cpu都不会占用太多,甚至很多时间都是0%, 如果 ...

  7. [leetcode]78. Subsets数组子集

    Given a set of distinct integers, nums, return all possible subsets (the power set). Note: The solut ...

  8. PHP开发——数据类型

    概述 l  变量就是一个容器,变量本身并没有类型,变量的类型解决值的类型. l  PHP和JS都属于弱类型语言,变量在运行过程中,类型是可以变的.但是,Java不可以. l  标量(基本)数据类型:字 ...

  9. Eigen子矩阵操作

    1 子矩阵操作简介 子矩阵操作又称块操作,在矩阵运算中,子矩阵的提取和操作应用也十分广泛.因此Eigen中也提供了相关操作的方法.提取的子矩阵在操作过程中既可以用作左值也可以用作右值. 2 块操作的一 ...

  10. osg探究补充:DatabasePager类简介

    简介 DatabasePager类,也就是常说的数据库分页技术,简单来说,就是在进行数据库查找时,有可能满足条件的数据很多,为了提高相应速度我们进行数据查找时进行分页查找与显示,当点击下一页时才会进行 ...