Salve,
sto cercando di reimplementare la funzione base64_encode(), ma senza risultati.
Ecco il codice che ho scritto:
Codice PHP:
<?php
function str2bin($str, $mode=0) {
$out = false;
for($a=0; $a < strlen($str); $a++) {
$dec = ord(substr($str,$a,1));
$bin = '';
for($i=7; $i>=0; $i--) {
if ( $dec >= pow(2, $i) ) {
$bin .= "1";
$dec -= pow(2, $i);
} else {
$bin .= "0";
}
}
($mode == 0) ? $out .= $bin." " : (($mode == 1) ? $out .= $bin : (($mode == 3) ? $out[$a] = $bin : $out = false));
}
return $out;
}
function toBase64($str) {
for($i=0;$i<strlen($str);$i++) {
$bins .= str2bin($str[$i],1);
}
echo "(".(strlen($bins) % 6).")Numeri decimali: ".$bins."<br>";
if((strlen($bins) % 6) != 0) {
for($i=0;$i<=(strlen($bins) % 6);$i++) {
$bins .= 00;
}
}
echo "Padding: ".$bins."<br>";
for($i=0;$i<strlen($bins);$i=$i+6) {
$vals[] = substr($bins, $i, 6);
}
$re = join("",$vals);
for($i=0;$i<strlen($re);$i=$i+8) {
$result .= chr(bindec($vals[$i]));
}
return $result;
}
echo toBase64("ciao")."<br>";
//echo base64_encode("ciao");
?>
L'output è una serie di simboli strani.
Cosa sbaglio?