Risultati da 1 a 3 di 3

Discussione: Php e funzione che restituisce byte

  1. #1
    XinYiMan è offline Nuovo Iscritto
    Data Registrazione
    Mar 2010
    Messaggi
    2

    Php e funzione che restituisce byte

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

  2. #2
    L'avatar di Eliox
    Eliox è offline Moderatore
    Data Registrazione
    Feb 2005
    Messaggi
    4,392

  3. #3
    XinYiMan è offline Nuovo Iscritto
    Data Registrazione
    Mar 2010
    Messaggi
    2
    Citazione Originariamente Scritto da Eliox Visualizza Messaggio
    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[i]);

    dove

    right: Word;
    s: string;

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

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •