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?