2008-09-16 32 views
2

我想写一个原始的字节/字节流到文件中的一个位置。 这是我目前:如何使用PHP文件API来写入原始字节?

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

目前这写道:“99”开始的字节的实际字符串值偏移1. IE,将其写入字节“9”和“9”。我只想写出实际的一个字节值0x63,恰好代表数字99.

感谢您的时间。

回答

7

fwrite()需要字符串。如果要将0x63字节写入文件,请尝试chr(0x63)

1

您试图将int传递给接受字符串的函数,因此它将被转换为字符串。

这会写你想要什么:

fwrite($fpr, "\x63"); 
4

这是因为fwrite()将需要一个字符串作为其第二个参数。请尝试执行此操作:

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

chr(0x63)返回一个字符串,其中一个字符的ASCII值为0x63。 (所以它会将数字0x63写入文件。)

+0

这取决于endianess。 – Christian 2012-01-22 21:44:18

0

如果您确实想写二进制文件,我建议将pack()方法与文件API一起使用。

See this question举例说明。

相关问题