如何计算符合GS1标准的GS1-128 SSCC条码校验位
符合GS1规范的SSCC条码校验位计算方法
SSCC组成说明
SSCC条码由两部分拼接而成:
- GTIN编号:示例为
1234567(7位) - 标识符:示例为
123456789(9位)
拼接后得到16位的原始SSCC串,再通过GS1规范的算法计算出第17位校验位,最终组成完整的17位SSCC条码。
校验位计算逻辑(GS1规范)
- 取16位的原始SSCC串,从右往左为每位数字分配权重:
- 奇数位置(从右数第1、3、5...15位)权重为1
- 偶数位置(从右数第2、4、6...16位)权重为3
- 将每位数字与对应权重相乘,把所有乘积相加得到总和
- 计算总和的下一个10的整数倍(比如总和是123,下一个10的倍数就是130)
- 用这个10的倍数减去总和,结果就是校验位;如果总和刚好是10的倍数,校验位为0
Python实现代码
以下是实现ADD_CHECKDIGIT_SSCC函数的代码,直接代入你的示例即可使用:
def ADD_CHECKDIGIT_SSCC(raw_sscc): # 校验输入格式:必须是16位数字字符串 if len(raw_sscc) != 16 or not raw_sscc.isdigit(): raise ValueError("原始SSCC必须是16位数字字符串") total = 0 # 从右往左遍历每个字符,索引0对应右数第1位 for idx, char in enumerate(reversed(raw_sscc)): digit = int(char) # 右数奇数位(索引偶数)乘1,偶数位(索引奇数)乘3 total += digit * 1 if idx % 2 == 0 else digit * 3 # 计算校验位,确保结果在0-9之间 check_digit = (10 - (total % 10)) % 10 return raw_sscc + str(check_digit) # 示例使用 GTIN = '1234567' Identifier = '123456789' raw_sscc = GTIN + Identifier SSCC_code = ADD_CHECKDIGIT_SSCC(raw_sscc) print(SSCC_code) # 输出完整的17位SSCC条码
内容的提问来源于stack exchange,提问作者Shwans
相关产品推荐
相关产品推荐

