首页 > 编程知识 正文

EAN13码校验码的生成与验证

时间:2023-11-21 19:26:43 阅读:291804 作者:EXAR

EAN13码是商品条码中最常用的一种,由13位数字组成,其中最后一位为校验码。该校验码是由前12位数字计算得出的,并用于验证EAN13码是否有效。本文将从生成EAN13码校验码以及验证EAN13码是否正确两个方面进行详细阐述。

一、生成EAN13码校验码

在生成EAN13码时,我们需要先输入前12位数字,然后计算出校验码,将其加到这12位数字后面即可生成EAN13码。

计算校验码的方法如下:

def calculate_ean13_checksum(digits: str) -> str:
    """
    Calculate EAN-13 check digit based on the first 12 digits.
    """
    assert len(digits) == 12, "EAN-13 must be 12 digits long"
    factors = [1, 3] * 6
    checksum = sum(int(digits[i]) * factors[i] for i in range(12))
    return str((10 - checksum % 10) % 10)

上面的代码中,calculate_ean13_checksum函数接收一个12位数字的字符串作为参数,返回其计算出的校验码。

计算校验码的方法是将前12位数字中的奇数位和偶数位分别相加,得到两个数,再将奇数位的和乘以3后加上偶数位的和,得到一个总和。最后,用10减去该总和对10取余数,所得的结果即为校验码。

二、验证EAN13码是否正确

如果要验证EAN13码是否正确,我们需要先确认其校验码是否与前12位数字计算得出的校验码相等。如果相等,则可以认为该EAN13码是有效的。

验证EAN13码的方法如下:

def validate_ean13(code: str) -> bool:
    """
    Validate EAN-13 code.
    """
    assert len(code) == 13, "EAN-13 must be 13 digits long"
    return code[-1] == calculate_ean13_checksum(code[:-1])

validate_ean13函数接收一个13位数字的字符串作为参数,返回一个布尔值,表示该EAN13码是否有效。

该函数通过调用calculate_ean13_checksum函数计算出前12位数字的校验码,然后将该校验码与传入的EAN13码的最后一位进行比较,如果相等,则说明该EAN13码是有效的。否则,可能是输入的EAN13码有误,也可能是输入的校验码有误。

三、总结

本文从生成EAN13码校验码以及验证EAN13码是否正确两个方面进行了详细阐述。在实际应用中,我们可以使用上面提到的两个函数来方便地生成和验证EAN13码。通过本文的介绍,相信大家对EAN13码的校验码计算和验证有了更深入的理解。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。