我想写一个原始的字节/字节流到文件中的一个位置。 这是我目前:如何使用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.
感谢您的时间。
我想写一个原始的字节/字节流到文件中的一个位置。 这是我目前:如何使用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.
感谢您的时间。
fwrite()
需要字符串。如果要将0x63
字节写入文件,请尝试chr(0x63)
。
您试图将int传递给接受字符串的函数,因此它将被转换为字符串。
这会写你想要什么:
fwrite($fpr, "\x63");
这是因为fwrite()将需要一个字符串作为其第二个参数。请尝试执行此操作:
fwrite($fpr, chr(0x63));
chr(0x63)返回一个字符串,其中一个字符的ASCII值为0x63。 (所以它会将数字0x63写入文件。)
如果您确实想写二进制文件,我建议将pack()
方法与文件API一起使用。
See this question举例说明。
这取决于endianess。 – Christian 2012-01-22 21:44:18