2016-08-13 46 views
1

要创建一个新文件,只需输入一个回车键并将其保存为test.txt。
test.txt中只有一个'\ 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,如何解决我的PHP代码来获取这样的正确答案00001010诸如XXD -b ./test.txt?
想想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 00000000,如何使之成为究竟00001010

回答

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 00000000,怎么能让它是完全00001010? –

相关问题