2017-04-16 22 views
-8

javaまたはphpまたはjavascriptで2つのアルゴリズムを作成しようとしています(私はこれらの言語を知っていますので、私の質問に答えることができます)。最初のアルゴリズムは、任意のファイル(exe、mp3、txt、png、docxなど)を取り、0と1のバイナリ文字列に変換する必要があります。また、2番目のアルゴリズムは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); 

それはそれはバイナリに変換する場合にのみ動作しますが、それは新しいファイルを作成するときに、その動作していない、それは同じサイズのファイルを作成しますが、ファイルは次のとおりです。

は、私はそれを開発しようとしましたそれはすべきではありません。新しいイメージ(このコードではファイルがイメージ)は、ファイルを開くときにエラーが表示されますが、ファイルが壊れている可能性があります。

+2

です。あなたは調査を行ったことがありますか、試しましたか? – NewToJS

+0

すべてが可能ですが、何を試しましたか? – Gntem

+0

@NewToJSはい、私はGoogleで多くの検索をしましたが、自分で何かをプログラムしようとしましたが失敗しました。私はそのような変換について知りません。 – ShaiLA

答えて

0

最後に、問題がコード内にあることがわかりました。 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); 
関連する問題