Php e funzione che restituisce byte

XinYiMan

Nuovo Utente
26 Mar 2010
5
0
0
Salve io ho un piccolo problema con un codice php che devo integrare sul mio sito

private function PKV_GetKeyByte($Seed,$a,$b,$c)
{
$a = $a % 25;
$b = $b % 3;
if( $a % 2 == 0 )
{
$result = ( ( $Seed >> $a ) & 0x000000FF ) ^ ( ( $Seed >> $b ) | $c );
}else
{
$result = ( ( $Seed >> $a ) & 0x000000FF ) ^ ( ( $Seed >> $b ) & $c );
}
return $result;
}

Questa funzione la chiamo così:

1: PKV_GetKeyByte(1001, 24, 3, 200)
2: PKV_GetKeyByte(1001, 10, 0, 56)
3: PKV_GetKeyByte(1001, 1, 2, 91)
4: PKV_GetKeyByte(1001, 7, 1, 100)

La funzione in questione in pascal funziona correttamente in php no. Vorrei capire perchè! In pascal il codice è:

function PKV_GetKeyByte(const Seed : Int64; a, b, c : Byte) : Byte;
var
risultato: byte;
begin
a := a mod 25;
b := b mod 3;
if a mod 2 = 0 then
risultato := ((Seed shr a) and $000000FF) xor ((Seed shr b) or c)
else
risultato := ((Seed shr a) and $000000FF) xor ((Seed shr b) and c);
PKV_GetKeyByte:=risultato;
end;

Risultato php

1: 1001
2: 1017
3: 174
4: 99

Risultato pascal

1: 233
2: 249
3: 174
4: c

I due valori in grassetto sono anomali. Perchè?
 
prova a dare uno sguardo a questo tutorial

Ok il problema di sopra l'ho risolto così:

private function PKV_GetKeyByte($Seed,$a,$b,$c)
{
$a = $a % 25;
$b = $b % 3;
if( $a % 2 == 0 )
{
$result = ( $Seed >> $a ) ^ ( ( $Seed >> $b ) | $c );
} else
{
$result = ( $Seed >> $a ) ^ ( ( $Seed >> $b ) & $c );
}
return $result & 0x000000FF;
}


Ora però ho un altro problema, vorrei sapere come tradurre in php la seguente riga di pascal:

right := right + Byte(s);

dove

right: Word;
s: string;

Qualcuno sa come si fa? Non so come tradurre la funzione Byte!:dipser::dipser:
 

Discussioni simili