2016-08-13 4 views
1

Um eine neue Datei zu erstellen, geben Sie nur eine Eingabetaste ein und speichern Sie sie als test.txt.
Es gibt nur ein '\ n' in der test.txt.
Um die Datei mit dem Befehl anzuzeigen:Wie Datei mit PHP in Binärformat anzuzeigen?

xxd -b ./test.txt 
0000000: 00001010 

Jetzt möchte ich mit PHP die gleiche Arbeit zu tun.

<?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'); 
?> 

Das Ergebnis ist 10100, wie mein PHP-Code zu beheben, um das so richtige Antwort 00001010 als xxd -b ./test.txt zu bekommen?
Denken Sie an Pytons Code.

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

Die Dateigröße ist 1, aber Ergebnis ist 00001010 00000000, wie man es macht genau 00001010 zu sein?

Antwort

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

Ausgang:

00001010 
+0

Die Dateigröße ist 1, aber Ergebnis ist 00001010 00000000, wie man es genau 00.001.010 sein? –

Verwandte Themen