Come posso utilizzare l'API del file PHP per scrivere byte non elaborati?
Domanda
Voglio scrivere un flusso di byte/byte non elaborato in una posizione in un file.Questo è quello che ho attualmente:
$fpr = fopen($out, 'r+');
fseek($fpr, 1); //seek to second byte
fwrite($fpr, 0x63);
fclose($fpr);
Questo attualmente scrive il valore di stringa effettivo di "99" a partire dall'offset di byte 1.IE, scrive i byte "9" e "9".Voglio solo scrivere il valore effettivo di un byte 0x63 che sembra rappresentare il numero 99.
Grazie per il tuo tempo.
Soluzione
fwrite()
prende le corde.Tentativo chr(0x63)
se vuoi scrivere a 0x63
byte nel file.
Altri suggerimenti
Questo perché fwrite() prevede una stringa come secondo argomento.Prova invece a fare questo:
fwrite($fpr, chr(0x63));
chr(0x63) restituisce una stringa con un carattere con valore ASCII 0x63.(Quindi scriverà il numero 0x63 nel file.)
Stai tentando di passare un int a una funzione che accetta una stringa, quindi viene convertita in una stringa per te.
Questo scriverà quello che vuoi:
fwrite($fpr, "\x63");
Se vuoi davvero scrivere binario su file, ti consiglio di usare il file pack()
approccio insieme all'API del file.
Vedi questa domanda per un esempio.