Ich habe folgendes Problem, ich versuche ein PHP-Skript zu schreiben welches verschiedene Bitoperationen durchführt.
PHP interpretiert aber leider jede Zahl die ich eingebe als char und rechnet dementsprechend mit dem ASCII-Wert.
Als Beispiel:
$testoutput = fopen ("testoutput", "wb");
fwrite ($testoutput, $magic);
$magic = $magic >> 1;
fwrite ($testoutput, $magic);
$magic erhält dabei vorher den Wert 0XEFAD0307 (dies funktioniert auch, da der Wert aus einer anderen Datei ausgelesen wird).
Die ersten 4 Bytes werden auch so in die Ausgabe geschrieben.
Die Zeile "$magic = $magic >> 1;" verschiebt das ganze jetzt jedoch nicht um 1 Bit nach rechts sondern um 0x31, da aus einem mir unerklärlichen Grund die 1 als char angesehen wird und dadurch der ASCII-Wert 0x31 benutzt wird.
Als weiteren Test dazu habe ich folgendes geschrieben
<?php
$test = 2;
echo gettype($test);
$fhandle = fopen("test.bin", "wb");
fwrite ($fhandle, $test);
fclose($fhandle);
?>
Dort landet in der test.bin der Wert 0x32 und das obwohl mir gettype vorher versichert das es sich um einen Integer handelt.
Hat jemand einen Vorschlag was ich machen kann?