2

我想将原始字节/字节流写入文件中的某个位置。这是我目前拥有的:

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

这当前从字节偏移量 1 开始写入“99”的实际字符串值。IE,它写入字节“9”和“9”。我只想写实际的一字节值 0x63,它恰好代表数字 99。

谢谢你的时间。

4

4 回答 4

7

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

于 2008-09-16T21:54:15.040 回答
4

这是因为 fwrite() 需要一个字符串作为它的第二个参数。尝试这样做:

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

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

于 2008-09-16T21:57:03.037 回答
1

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

这将写出你想要的:

fwrite($fpr, "\x63");
于 2008-09-16T21:54:51.670 回答
0

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

有关示例,请参见此问题。

于 2012-01-22T21:47:49.820 回答