PDA

View Full Version : [PHP]Aiuto con big integer


micoud
04-09-2012, 19:15
Stavo convertendo del codice scritto in delphi in php (che nn conosco) ma ho un problema...questa è la funzione in php

function get_unit($hex)
{
$V0=sprintf("%08X",(ord($hex[0]) & 0x000000FF));
$V1=sprintf("%08X",(ord($hex[1]) << 0x08) & 0x0000FF00);
$V2=sprintf("%08X",(ord($hex[2]) << 0x10) & 0x00FF0000);
$V3=sprintf("%08X",(ord($hex[3]) << 0x18) & 0xFF000000);

return ((bchexdec($V0)) |(bchexdec($V1))|(bchexdec($V2))|(bchexdec($V3)));

}

function bchexdec($hex) {
if(strlen($hex) == 1) {
return hexdec($hex);
} else {
$remain = substr($hex, 0, -1);
$last = substr($hex, -1);
return bcadd(bcmul(16, bchexdec($remain)), hexdec($last));
}
}

ed ottengo giustamente
v0=93
v1=31232
v2=2818048
v3=4143972352

quello che nn riesco ad ottenere è l'or tra i quattro interi...dovrebbe uscire 4146821725 mentre ottengo ?;7;;7:352 :muro:

micoud
04-09-2012, 19:39
dovrei aver risolto cosi

function get_unit($hex)
{
$V0=sprintf("%08X",(ord($hex[0]) & 0x000000FF));
$V1=sprintf("%08X",(ord($hex[1]) << 0x08) & 0x0000FF00);
$V2=sprintf("%08X",(ord($hex[2]) << 0x10) & 0x00FF0000);
$V3=sprintf("%08X",(ord($hex[3]) << 0x18) & 0xFF000000);

return bchexdec((substr($V3,0,2).substr($V2,2,2).substr($V1,4,2).substr($V0,6,2)));
}