2016-08-13 10 views
1

新しいファイルを作成するには、Enterキーを1つだけ入力し、test.txtとして保存します。
test.txtには1つの '\ n'しかありません。
は、コマンドでファイルを表示するには、次のphpでバイナリ形式にファイルを表示するには?

xxd -b ./test.txt 
0000000: 00001010 

は、今私は、PHPで同じ仕事をしたいです。

<?php 
function parse($target){ 
    $file_handle = fopen($target, "rb"); 
    while (!feof($file_handle)) { 
     $byte = fread($file_handle,1); 
     echo base_convert(ord($byte),10,2); 
    } 
    fclose($file_handle); 
} 
parse('test.txt'); 
?> 

結果は10100で、どのように正しい答えXXD -b ./test.txtとして00001010を得るために、私のPHPコードを修正するには?
Pytonのコードを考えてください。

<?php 
function parse($target){ 
    $file_handle = fopen($target, "rb"); 
    while (!feof($file_handle)) { 
     $byte = fread($file_handle,1); 
     echo sprintf("%08s ",base_convert(ord($byte), 10, 2)); 
    } 
    fclose($file_handle); 
} 
$target='test.txt'; 
echo filesize($target); 
parse($target); 
?> 

ファイルサイズは1ですが、結果は、それが正確に00001010するようにする方法、00001010 00000000のですか?

答えて

1
<?php 
function parse($target){ 
    $file_handle = fopen($target, "rb"); 
    $filesize = filesize($target);  
    while (!feof($file_handle)) { 
     $byte = fread($file_handle, 1); 
     echo sprintf("%'08b", ord($byte)); 
     if(ftell($file_handle) == $filesize) { 
      break; 
     } 
    } 
    fclose($file_handle); 
} 
parse('test.txt'); 

出力:

00001010 
+0

ファイルサイズは1ですが、結果は、それが正確に00001010であることを作る方法を、00001010 00000000ですか? –

関連する問題