我在PHP手册中找到的用于将原始字节写入文件的所有内容都是fwrite。但是当我使用它(在b模式下打开文件)时,它似乎是写字符,而不是原始字节。
网络搜索没有任何用处。
我在文件中使用大量字节来保存位,表示大型集合的成员。由于我一次只操作一个位,因此我想读取和写入包含当前位被更改的一个原始字节。
这样设置的算法简单,但与我的问题无关,即:如何将一个原始字节(或更大的固定长度数据块)写入偏移量的文件中?
答案 0 :(得分:1)
我从PHP新闻组(邮件列表)那里得到了很好的帮助。尽管PHP手册似乎将fwrite记录为编写字符串或二进制数据,但实际上它只会写入字符串。例如,如果将整数或二进制值0x1写为字节,则无论是否在fopen中指定“b”模式,都将实际写入值0x31。
一种解决方案是使用fprintf。例如,fprintf($Res, "%c", 0x1);
实际上会将字节值0x1写入文件中的当前偏移量。
答案 1 :(得分:0)
使用pack正确打包数据。
示例:
$a = 1 & 1;
$b = pack('i', $a);
file_put_contents('sample', $b);
然后使用十六进制编辑器查看文件sample
。