Pau*_*xon 13
该算法在本维基百科关于EAN的文章中有所涉及,请注意EAN-8的计算方法与EAN-13相同.
这是http://www.barcodeisland.com/ean8.phtml的一个有效例子:
假设我们希望对7位数消息"5512345"进行编码,我们将按以下方式计算校验和:
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
Run Code Online (Sandbox Code Playgroud)
总数为15 + 5 + 3 + 2 + 9 + 4 + 15 = 53.必须将7加到53以产生一个可被10整除的数字,因此校验和数字为7,完成的条形码值为"55123457" .
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;
Run Code Online (Sandbox Code Playgroud)
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;
}
Run Code Online (Sandbox Code Playgroud)
小智 7
抱歉重新开放
JAVA VERSION
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;
}
Run Code Online (Sandbox Code Playgroud)