Come posso utilizzare l'API del file PHP per scrivere byte non elaborati?

StackOverflow https://stackoverflow.com/questions/77558

  •  09-06-2019
  •  | 
  •  

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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top