我想将原始字节/字节流写入文件中的某个位置。这是我目前拥有的:
$fpr = fopen($out, 'r+');
fseek($fpr, 1); //seek to second byte
fwrite($fpr, 0x63);
fclose($fpr);
这当前从字节偏移量 1 开始写入“99”的实际字符串值。IE,它写入字节“9”和“9”。我只想写实际的一字节值 0x63,它恰好代表数字 99。
谢谢你的时间。
fwrite()
需要字符串。chr(0x63)
如果您想将一个0x63
字节写入文件,请尝试。
这是因为 fwrite() 需要一个字符串作为它的第二个参数。尝试这样做:
fwrite($fpr, chr(0x63));
chr(0x63) 返回一个字符串,其中一个字符的 ASCII 值为 0x63。(所以它会将数字 0x63 写入文件。)
您正在尝试将 int 传递给接受字符串的函数,因此它正在为您转换为字符串。
这将写出你想要的:
fwrite($fpr, "\x63");
如果您真的想将二进制文件写入文件,我建议将该pack()
方法与文件 API 一起使用。
有关示例,请参见此问题。