题
我需要的是一个相当于PHP的 fseek()
功能。该工作文件,但我有一个变量,其中包含二进制数据和我想要的工作。我知道我可以用 substr()
, 但那将是跛脚-是用于串,不是二进制数据。此外,创造一个文件,然后使用 fseek()
不是我要寻找的。
也许构造的东西用流?
编辑:好吧,我几乎没有:
$data = fopen('data://application/binary;binary,'.$bin,'rb');
警告:未能开流:rfc2397:非法的参数
解决方案
凯:
你几乎已经回答了自己在这里。流的答案。以下人工输入将有启发: http://us.php.net/manual/en/wrappers.data.php
它基本上可以让你通过任意数据,以PHP的文件处理功能,例如fopen(并因此fseek).
然后你可以做一些事情,如:
<?php
$data = fopen('data://mime/type;encoding,' . $binaryData);
fseek($data, 128);
?>
其他提示
fseek对数据中变量没有意义。fseek只是个职位的文件处理指定的偏差,因此下一fread呼吁开始读这抵消。没有同等的fread为串。
什么错substr()?
与一个文件,你会做的事:
$f = fopen(...)
fseek($f, offset)
$x = fread($f, len)
与substr:
$x = substr($var, offset, len)
我猜,但也许是被要求是的方式来访问字节中的一个变量使用一个指..(使用它就像一系列字样你可以做到在c-没有存储器开销的投入数据在php阵列),并能够编辑他们处于没有开销的复制的数据。
不能够这样做,是一个大问题,但如果操作系统的高速缓存盘数据以及使用fseek在临时文件可能是一个解决方法。
不隶属于 StackOverflow