首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EAN 8:如何计算校验和数字?

EAN 8:如何计算校验和数字?
EN

Stack Overflow用户
提问于 2009-07-16 10:12:21
回答 14查看 32.4K关注 0票数 13

我需要以编程方式创建EAN 8条码。我搜索一个算法来计算校验和数字。

EN

回答 14

Stack Overflow用户

回答已采纳

发布于 2009-07-16 10:26:48

代码语言:javascript
复制
int checkSum(const std::vector<int>& code) const
{
    if (code.size() < 8) return false;

    for( SIZE_T i = 0; i< code.size(); i++ )
    {
        if( code[i] < 0 ) return false;
    }

    int sum1 = code[1] + code[3] + code[5] 
    int sum2 = 3 * (code[0] + code[2] + code[4] + code[6]);

    int checksum_value = sum1 + sum2;
    int checksum_digit = 10 - (checksum_value % 10);
    if (checksum_digit == 10) checksum_digit = 0;

    return checksum_digit;
}
票数 11
EN

Stack Overflow用户

发布于 2009-07-16 10:18:37

wikipedia article on EAN介绍了该算法,请注意,EAN-8的计算方式与EAN-13的计算方式相同。

下面是一个来自http://www.barcodeisland.com/ean8.phtml的工作示例:

假设我们希望对7位数的消息"5512345“进行编码,我们将按以下方式计算校验和:

代码语言:javascript
复制
Barcode          5     5     1     2     3     4     5
Odd/Even Pos?    O     E     O     E     O     E     O
Weighting        3     1     3     1     3     1     3
Calculation    5*3   5*1   1*3   2*1   3*3   4*1   5*3
Weighted Sum    15     5     3     2     9     4    15

总数是15 +5+3+2+9+4+ 15 = 53。必须将7与53相加,才能产生一个可被10整除的数字,因此校验和数字为7,完整的条形码值为"55123457“。

代码语言:javascript
复制
string code="55123457";

int sum1 = code[1] + code[3] + code[5] 
int sum2 = 3 * (code[0] + code[2] + code[4] + code[6]);
int checksum_value = sum1 + sum2;

int checksum_digit = 10 - (checksum_value % 10);
if (checksum_digit == 10) 
    checksum_digit = 0;
票数 14
EN

Stack Overflow用户

发布于 2012-10-04 03:26:47

很抱歉重新开通

JAVA版本

代码语言:javascript
复制
public int checkSum(String code){
        int val=0;
        for(int i=0;i<code.length();i++){
            val+=((int)Integer.parseInt(code.charAt(i)+""))*((i%2==0)?1:3);
        }

        int checksum_digit = 10 - (val % 10);
        if (checksum_digit == 10) checksum_digit = 0;

        return checksum_digit;
    }
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1136642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档