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

夏拉

我正在尝试通过 java 或 php 或 javascript 创建 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);

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

夏拉

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

 $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);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将二进制字符串(ASCII)转换为二进制文件

来自分类Dev

将二进制字符串转换为布尔数组并输出二进制文件

来自分类Dev

将二进制字符串转换为二进制

来自分类Dev

将二进制字符串转换为二进制

来自分类Dev

将二进制字符串转换为二进制补码

来自分类Dev

Python 将二进制字符串转换为二进制整数

来自分类Dev

将字符串转换为二进制?

来自分类Dev

将二进制转换为字符串

来自分类Dev

将字符串转换为二进制?

来自分类Dev

将哈希字符串转换为二进制文件

来自分类Dev

如何将Elixir二进制文件转换为字符串?

来自分类Dev

转换为二进制文件

来自分类Dev

Python:从二进制转换为字符串

来自分类Dev

二进制代码转换为字符串

来自分类Dev

将十六进制字符串转换为二进制字符串

来自分类Dev

C ++-将字符串二进制链转换为int二进制链

来自分类Dev

将文件从ASCII转换为二进制

来自分类Dev

NodeJS:下载文件并转换为二进制字符串

来自分类Dev

将从二进制文件读取的字符串转换为整数

来自分类Dev

Python将二进制文件转换为字符串,同时忽略非ASCII字符

来自分类Dev

Python将二进制文件转换为字符串,同时忽略非ASCII字符

来自分类Dev

将二进制字符串转换为十进制

来自分类Dev

将十六进制字符串转换为二进制

来自分类Dev

将二进制字符串转换为十进制时结果错误

来自分类Dev

将字符串中的十进制转换为二进制时出错

来自分类Dev

Arduino C / C ++将二进制字符串转换为十进制

来自分类Dev

将十六进制字符串转换为二进制并使用netcat发送

来自分类Dev

使用字符串将二进制转换为八进制

来自分类Dev

将二进制字符串转换为十进制

Related 相关文章

热门标签

归档