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è?
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è?