Originariamente inviato da Andrea1979
Il "problema" è il comportamento "inatteso" delle funzioni di conversione da base a base: nell'alfabeto del tuo codice a barre non sono assegnabili A, E, I, O. Nella conversione "intrinseca" di PHP, ad A corrisponde 10 etc etc, ed infatti facendo i conti (e fatalità l'ultima lettera utile è la V, a cui corrisponde 31) viene proprio fuori il risultato che ottieni tu: 1.043.722.184
Ok perfetto e' tutto chiarissimo Grazie!
ma mi sa che sbaglio ancora qualcosa...
Codice PHP:
function farmacode($code){
$wres = 0;
$codeprint = "";
$strcon = "0123456789BCDFGHJKLMNPQRSTUVWXYZ";
$strcon = str_split($strcon,1);
$codelen = strlen( $code ) - 1;
for( $i = 0; $i <= $codelen; $i++ ) {
$char = array_search(substr( $code, $i, 1 ), $strcon);
$wres += ($char * 32^($codelen - $i));
}
return $wres;
}
$code = 'V3BRU8';
echo farmacode($code);
RISULTATO => 3119 
qualche idea?
Grazie