¿Cómo puedo utilizar la API de archivos PHP para escribir bytes sin formato?

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

  •  09-06-2019
  •  | 
  •  

Pregunta

Quiero escribir un flujo de bytes/bytes sin formato en una posición en un archivo.Esto es lo que tengo actualmente:

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

Actualmente, esto escribe el valor de cadena real de "99" comenzando en el desplazamiento del byte 1.Es decir, escribe los bytes "9" y "9".Solo quiero escribir el valor real de un byte 0x63 que representa el número 99.

Gracias por tu tiempo.

¿Fue útil?

Solución

fwrite() lleva cuerdas.Intentar chr(0x63) si quieres escribir un 0x63 byte al archivo.

Otros consejos

Esto se debe a que fwrite() espera una cadena como segundo argumento.Intenta hacer esto en su lugar:

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

chr(0x63) devuelve una cadena con un carácter con valor ASCII 0x63.(Entonces escribirá el número 0x63 en el archivo).

Está intentando pasar un int a una función que acepta una cadena, por lo que se convierte en una cadena por usted.

Esto escribirá lo que quieras:

fwrite($fpr, "\x63");

Si realmente desea escribir binarios en archivos, le recomendaría utilizar el pack() enfoque junto con el archivo API.

Ver esta pregunta para un ejemplo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top