我想将原始字节/字节流写入文件中的位置。 这就是我目前所拥有的:
$fpr = fopen($out, 'r+');
fseek($fpr, 1); //seek to second byte
fwrite($fpr, 0x63);
fclose($fpr);
这当前写入从字节偏移1开始的实际字符串值“99”.IE,它写入字节“9”和“9”。我只想写实际的一个字节值0x63,恰好代表数字99。
感谢您的时间。
答案 0 :(得分:7)
fwrite()
需要字符串。如果要在文件中写入chr(0x63)
字节,请尝试0x63
。
答案 1 :(得分:4)
那是因为fwrite()期望一个字符串作为它的第二个参数。试着这样做:
fwrite($fpr, chr(0x63));
chr(0x63)返回一个字符串,其中一个字符的ASCII值为0x63。 (因此它会将数字0x63写入文件。)
答案 2 :(得分:1)
您正在尝试将int传递给接受字符串的函数,因此它将被转换为字符串。
这将写下你想要的东西:
fwrite($fpr, "\x63");
答案 3 :(得分:0)
如果您真的想将二进制文件写入文件,我建议您将pack()
方法与文件API一起使用。
See this question举个例子。