Pergunta

Quero gravar um fluxo bruto de bytes/bytes em uma posição em um arquivo.Isso é o que tenho atualmente:

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

Atualmente, isso grava o valor real da string "99", começando no deslocamento de byte 1.Ou seja, ele grava os bytes "9" e "9".Eu só quero escrever o valor real de um byte 0x63, que representa o número 99.

Obrigado pelo seu tempo.

Foi útil?

Solução

fwrite() leva cordas.Tentar chr(0x63) se você quiser escrever um 0x63 byte para o arquivo.

Outras dicas

Isso porque fwrite() espera uma string como segundo argumento.Tente fazer isso:

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

chr(0x63) retorna uma string com um caractere com valor ASCII 0x63.(Portanto, escreverá o número 0x63 no arquivo.)

Você está tentando passar um int para uma função que aceita uma string, então ele está sendo convertido em uma string para você.

Isto irá escrever o que você deseja:

fwrite($fpr, "\x63");

Se você realmente deseja gravar binários em arquivos, aconselho usar o pack() abordagem junto com a API do arquivo.

Veja esta pergunta Por exemplo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top