<?php
$RUN_ID=$_REQUEST['RUN_ID'];
function EAN13($head, $num) {
$s = $head.str_pad($num, 12 - strlen($head), "0", STR_PAD_LEFT);
$j = $e = 0;
for($i=0; $i<12; $i+=2) {
$j += $s{$i};
$e += $s{$i+1};
}
$n = 10 - (($e * 3 + $j) % 10);
return $s.$n;
}echo EAN13(9,1000);
?>这段代码有问题,生成却是90000000100010,应该是9000000010000
$RUN_ID=$_REQUEST['RUN_ID'];
function EAN13($head, $num) {
$s = $head.str_pad($num, 12 - strlen($head), "0", STR_PAD_LEFT);
$j = $e = 0;
for($i=0; $i<12; $i+=2) {
$j += $s{$i};
$e += $s{$i+1};
}
$n = 10 - (($e * 3 + $j) % 10);
return $s.$n;
}echo EAN13(9,1000);
?>这段代码有问题,生成却是90000000100010,应该是9000000010000
代码改了一下,计算出来的校验位数值是7
function EAN13($head, $num) {
$s = $head.str_pad($num, 12 - strlen($head), "0", STR_PAD_LEFT);
$C1 = $C2 = 0;
for($i = 1; $i < 12; $i += 2) {
$C1 += $s[$i];
$C2 += $s[$i + 1];
}
$C2 *= 3;
$CC = ($C1 + $C2) % 10;
$C = (10 - $CC) % 10;
return $s.$C;
}echo EAN13(9,1000);
不对,检验码应该是0才对,是EAN13编码。