我需要的是一个相当于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在临时文件可能是一个解决方法。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top