将任何文件转换为二进制字符串并从二进制转换为文件[关闭]

Posted

技术标签:

【中文标题】将任何文件转换为二进制字符串并从二进制转换为文件[关闭]【英文标题】:Convert any file to binary string and from binary to file [closed] 【发布时间】:2017-09-12 05:36:57 【问题描述】:

我正在尝试通过 java 或 phpjavascript 创建 2 种算法(我知道这些语言,因此您可以使用它们来回答我的问题)。第一种算法应该将任何文件(exe、mp3、txt、png、docx 等)转换为 0 和 1 的二进制字符串。第二种算法应该将 0 和 1 的字符串转换为文件。

这可能吗?如果是,我该怎么做?

我试图开发它:

 $buffer = file_get_contents("image.png");
 $length = filesize("image.png");

 if (!$buffer || !$length) 
   die("Reading error\n");
 

 $_buffer = '';
 for ($i = 0; $i < $length; $i++) 
   $_buffer .= sprintf("%08b", ord($buffer[$i]));
 

 echo $_buffer."<br>";

 $nb = "";
 for($i = 0;$i<strlen($_buffer)/8;$i++) 
     $sub = substr($_buffer, $i*8,$i*8+8);
     $nb .= chr(bindec($sub));
 
 $new = fopen("aaaimage.png","wb");
 $w = fwrite($new,$nb);

它仅在转换为二进制文件时才有效,但是当它创建新文件时,它不起作用,它会创建一个大小相同的文件,但文件不能正常工作。新图像(在此代码中文件是图像)在我尝试打开它时显示错误,错误是文件可能已损坏。

【问题讨论】:

你做过研究或尝试过吗? 一切皆有可能,但你尝试过什么?! @NewToJS 是的,我在 Google 上搜索了很多,我尝试自己编写一些东西,但失败了。我不知道这种转换。 如果您尝试了某项操作但无法使其正常工作,请向我们展示您尝试过的内容以及错误所在,我们或许可以帮助您处理该代码。这不是免费的编码服务,我们只是为您编码。向我们证明您确实付出了努力。 @Mr.Phoenix 我试过了,我创建了从文件中获取二进制文件的代码,但我不知道如何再次将其转换为文件 【参考方案1】:

最后,我发现问题出在代码上。只是使用 substr 函数的小错误。 所以,正确的代码是:

 $buffer = file_get_contents("image.png");
 $length = filesize("image.png");

 if (!$buffer || !$length) 
   die("Reading error\n");
 

 $_buffer = '';
 for ($i = 0; $i < $length; $i++) 
   $_buffer .= sprintf("%08b", ord($buffer[$i]));
 

 echo $_buffer."<br>";

 $nb = "";
 for($i = 0;$i<strlen($_buffer)/8;$i++) 
     $sub = substr($_buffer, $i*8,8);
     $nb .= chr(bindec($sub));
 
 $new = fopen("aaaimage.png","wb");
 $w = fwrite($new,$nb);

【讨论】:

以上是关于将任何文件转换为二进制字符串并从二进制转换为文件[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Pentaho Kettle - 从二进制类型的字段将十六进制转换为数字

从二进制文件读取时将大端转换为小端

从二进制文件中读取并转换为双精度?

将核心数据文件从二进制转换为 XML

将二进制文件从一个位置转换为字符串到另一个位置

读取二进制文件碎片并转换为具有内存效率的整数