Traktowanie zmiennych jako DWORD i zwrócenie -1 dla not 0.

0

Lamerskie pytanie, bom totalna lama w PHP. A cuduje w PHP coś na bazie już działającego kodu generacji seriala do pewnego programu w Delphi. Chciałbym aby dla takich założeń:

<?php
  $EDI = 0;
  $EDI = !$EDI;
  echo "test EDI = " . sprintf('%08X', $EDI). "<br>";
?>

Zwracało mi test EDI = FFFFFFFF, a nie test EDI = 00000001. I ma to być uniwersalne dla innych wartości wejściowych. Ponieważ w Delphi not 0 zwraca właśnie -1. Natomiast pod PHP uparcie zwraca 1.

Jak więc "kazać PHP" wszelkie zmienne liczbowe wykorzystywane w kodzie traktować jako DWORD? Bo póki co mam inne wartości niż się spodziewam i docelowy skrypt php działa nie tak jak chcę. Dziękuję z góry za pomoc i przykłady kodu skryptów.

0

Operator ~, a nie !.

0

Pomijając już ten błędny operator, nie polecam Ci pracy w PHP na 32 bitowych unsigned int-ach, prędzej czy później wystąpi problem spowodowany tym, że PHP nie obsługuje unsigned int-ów, przykładem takich problemów mogą być rotacje bitowe i shifty, sam kilka razy na tym poległem i od tej pory jeśli muszę w PHP operować na unsigned int-ach odpowiedź jest prosta - biblioteka GMP http://php.net/manual/en/ref.gmp.php szczerze polecam, zaoszczędzi Ci to kupę nerwów i debuggowania.

0

To co podał @Rev załapało. Ale i @Bartosz Wójcik niestety ma rację. To co się po drobnych przeróbkach przerzuciło do Delphi i był keygen bryka. Jednak właśnie w kodzie później pojawia się i shr i and i xor. A do tego używana jest tablica DWORDów jak przy CRC32.

Pod PHP wychodzą mi inne rzeczy. Bo pewnie xorować i "andować" też trzeba inaczej niż to robię teraz. Chyba sobie wzięty z jednego programu algorytm odpuszczę i zastosuję jakiś prostszy. Żeby mieć unikalny token do sprawdzania kto może pobrać pewien plik. Kombinowanie z algorytmem stricte wziętym z kodu dla Windowsa jest niestety złym pomyśłem :(

Dziękuję za odpowiedzi.

1 użytkowników online, w tym zalogowanych: 0, gości: 1