Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将基64解码为ASCII码_Php - Fatal编程技术网

Php 将基64解码为ASCII码

Php 将基64解码为ASCII码,php,Php,我必须将一个base 64字符串解码为ASCII。问题是该字符串的长度为5482768,由于某种原因,在尝试转换它时,它无法工作 这是我尝试的第一件事: $var=base64_decode($str); 然后我想到了在文件中写入字符串,然后读取并转换它,就像这样: $myfile = fopen("file2.txt", "w") or die("Unable to open file!"); $txt = $str; fwrite($myfile, $txt); fclose($myfil

我必须将一个base 64字符串解码为ASCII。问题是该字符串的长度为5482768,由于某种原因,在尝试转换它时,它无法工作

这是我尝试的第一件事:

$var=base64_decode($str);
然后我想到了在文件中写入字符串,然后读取并转换它,就像这样:

$myfile = fopen("file2.txt", "w") or die("Unable to open file!");
$txt = $str;
fwrite($myfile, $txt);
fclose($myfile);

$myfile = fopen("file2.txt", "r") or die("Unable to open file!");
$string= fread($myfile,filesize("file2.txt"));
fclose($myfile);
print_r(base64_decode($string));
也没用

我的假设是,由于字符串的长度,它不起作用,当我将它保存到文件中时,大小约为5355KB,它太大了

我能做些什么来解决这个问题


谢谢

由于base 64编码每个字符存储6位原始信息-您可以尝试以8倍大小的块读取文件并逐块解码。

由于base 64编码每个字符存储6位原始信息-您可以尝试以8倍大小的块读取文件并逐块解码一件一件。

您能显示这个问题文件吗(例如使用)?“不工作”的确切含义是什么?也许您的脚本只是内存不足,您是否启用了正确的错误报告功能?将数据写入一个文件,然后将其读回,然后再次将其作为字符串传递给base64_decode,这可能不会有太大变化,嗯?我的意思是,我想这当然是愚蠢的,但我不想忽视一个想法。“不工作”意味着它在屏幕上什么也不显示,我有:ini_设置('display_errors',1);ini设置(“显示启动错误”,1);错误报告(E_全部);也没有显示任何东西你能显示这个问题文件吗(例如)?“不工作”的确切意思是什么?也许您的脚本只是内存不足,您是否启用了正确的错误报告功能?将数据写入一个文件,然后将其读回,然后再次将其作为字符串传递给base64_decode,这可能不会有太大变化,嗯?我的意思是,我想这当然是愚蠢的,但我不想忽视一个想法。“不工作”意味着它在屏幕上什么也不显示,我有:ini_设置('display_errors',1);ini设置(“显示启动错误”,1);错误报告(E_全部);也不显示6位,而不是5位。(2的6次方等于64,因此得名。)但是的,除此之外,这也是我的建议。6除以8的倍数是你想要分割的。(F.e.2个字节,16位,可以被8整除——但这不会给你一个“完整”的6位字符集,因此解码可能会失败。另外,你会丢失下一个字符的前4位。)@CBroe是的,6位,我的坏,修复了6位,不是5位。(2的6次方等于64,因此得名。)但是的,除此之外,这也是我的建议。6除以8的倍数是你想要分割的。(F.e.2个字节,16位,可以被8整除——但这不会给你一个“完整”的6位字符集,因此解码可能会失败。另外,你会丢失下一个字符的前4位。)@CBroe是的,6位,我的坏,修复了