gpt4 book ai didi

file-get-contents - PHP 将大的二进制文件转换为可读文件

转载 作者:可可西里 更新时间:2023-11-01 00:33:37 25 4
gpt4 key购买 nike

我在使用这个简单的脚本时遇到问题...

<?php
$file = "C:\\Users\\Alejandro\\Desktop\\integers\\integers";

$file = file_get_contents($file, NULL, NULL, 0, 34359738352);

echo $file;
?>

它总是给我这个错误:

file_get_contents(): length must be greater than or equal to zero

我真的很累,有人能帮帮我吗?

编辑:将文件分成 32 个部分后...

错误是

PHP Fatal error:  Allowed memory size of 1585446912 bytes exhausted (tried to al
locate 2147483648 bytes)

Fatal error: Allowed memory size of 1585446912 bytes exhausted (tried to allocat
e 2147483648 bytes)

编辑(2):

现在的任务是将此二进制文件转换为从 0 到 (2^31)-1 的数字列表,这就是为什么我需要读取该文件,以便我可以将二进制数字转换为十进制数字。

最佳答案

看起来您的文件路径缺少反斜杠,这可能导致 file_load_contents() 加载文件失败。

试试这个:

$file = "C:\\\\Users\\Alejandro\\Desktop\\integers\\integers";

编辑:现在您可以读取您的文件,我们发现由于您的文件太大,它超出了您的内存限制并导致您的脚本崩溃。

尝试一次缓冲一件,以免超出内存限制。这是一个将读取二进制数据的脚本,一次一个 4 字节数字,然后您可以根据需要对其进行处理。

通过一次只缓冲一 block ,您允许 PHP 一次只使用 4 个字节来存储文件的内容(当它处理每一 block 时),而不是将整个内容存储在一个巨大的缓冲区中并导致溢出错误。

给你:

$file = "C:\\\\Users\\Alejandro\\Desktop\\integers\\integers";

// Open the file to read binary data
$handle = @fopen($file, "rb");
if ($handle) {
while (!feof($handle)) {
// Read a 4-byte number
$bin = fgets($handle, 4);
// Process it
processNumber($bin);
}
fclose($handle);
}

function processNumber($bin) {
// Print the decimal equivalent of the number
print(bindec($bin));
}

关于file-get-contents - PHP 将大的二进制文件转换为可读文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16378088/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com