Frage

Ich möchte ein rohes Byte / Byte-Strom in eine Position in einer Datei schreiben. Das ist, was ich habe zur Zeit:

$fpr = fopen($out, 'r+');
fseek($fpr, 1); //seek to second byte
fwrite($fpr, 0x63); 
fclose($fpr);

Dies schreibt derzeit die tatsächlich String-Wert von "99" beginnend bei Byte-Offset 1. IE, es schreibt Bytes "9" und "9". Ich möchte nur die tatsächlichen ein Byte-Wert 0x63 schreiben, die Nummer 99 repräsentieren passiert.

Vielen Dank für Ihre Zeit.

War es hilfreich?

Lösung

fwrite() nimmt Saiten. Versuchen Sie chr(0x63), wenn Sie einen 0x63 Byte in die Datei geschrieben werden sollen.

Andere Tipps

Das ist, weil fwrite () eine Zeichenfolge als zweites Argument erwartet. dies zu tun Versuchen Sie stattdessen:

fwrite($fpr, chr(0x63));

chr (0x63) gibt eine Zeichenkette mit einem Zeichen mit ASCII-Wert 0x63. (So, es wird die Nummer 0x63 in die Datei schreiben.)

Sie versuchen, ein int eine Funktion übergeben, die eine Zeichenfolge annimmt, so in einen String es wird für Sie umgewandelt.

Dies wird schreiben, was Sie wollen:

fwrite($fpr, "\x63");

Wenn Sie wirklich schreiben, um Dateien binär wollen, würde ich raten, den pack() Ansatz zu verwenden, zusammen mit dem Datei-API.

Sehen Sie diese Frage für ein Beispiel.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top