【问题标题】:How can I use the PHP File api to write raw bytes?如何使用 PHP File api 写入原始字节?
【发布时间】:2012-01-23 05:47:49
【问题描述】:

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

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

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

感谢您的宝贵时间。

【问题讨论】:

    标签: php file-io


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

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

        这会写出你想要的:

        fwrite($fpr, "\x63");
        

        【讨论】:

          【解决方案4】:

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

          See this question 为例。

          【讨论】:

            猜你喜欢
            • 2013-08-19
            • 2012-03-31
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-05-02
            • 2018-11-03
            • 1970-01-01
            • 2019-01-15
            相关资源
            最近更新 更多