Heim  >  Artikel  >  Backend-Entwicklung  >  Schreiben Sie die Binärform der Datei mit PHP

Schreiben Sie die Binärform der Datei mit PHP

WBOY
WBOYOriginal
2016-08-18 09:16:081350Durchsuche

xxd filename
kann die binäre Form einer Datei auf dem Terminal anzeigen, ohne die Codierung der Datei zu berücksichtigen.
Wie erreicht man dieselbe Funktion mit PHP?
1.fopen
2.fread
3.ehco funktioniert nicht. Die Binärdatei des Textes kann nicht angezeigt werden.

Ich habe einen Code geschrieben

<code><?php
    $target="test.txt";
    $file_handle = fopen($target, "rb");
    while (!feof($file_handle)) {
       $byte = fread($file_handle,1);
       echo $byte;
    }
    fclose($file_handle );
?>
</code>

Es wurde festgestellt, dass es nicht funktioniert. Es wird das Zeichen selbst angezeigt, nicht der binäre Ausdruck des Zeichens.
Es wird erwartet, dass dieser ehco geändert werden muss. Bitte sagen Sie mir, wie ich ihn ändern kann.
fwrite(STDOUT,$byte); funktioniert nicht, selbst wenn Sie echo $byte; ersetzen.

Nach einigen Modifikationen sind wir nicht mehr weit vom Erfolg entfernt.

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

用一个只包含换行键的文件测试
xxd  -b ./test.txt
0000000: 00001010  

我的程序运行结果是:
10100</code>

Antwortinhalt:

xxd filename
kann die binäre Form einer Datei auf dem Terminal anzeigen, ohne die Codierung der Datei zu berücksichtigen.
Wie erreicht man dieselbe Funktion mit PHP?
1.fopen
2.fread
3.ehco funktioniert nicht. Die Binärdatei des Textes kann nicht angezeigt werden.

Ich habe einen Code geschrieben

<code><?php
    $target="test.txt";
    $file_handle = fopen($target, "rb");
    while (!feof($file_handle)) {
       $byte = fread($file_handle,1);
       echo $byte;
    }
    fclose($file_handle );
?>
</code>

Es wurde festgestellt, dass es nicht funktioniert. Es wird das Zeichen selbst angezeigt, nicht der binäre Ausdruck des Zeichens.
Es wird erwartet, dass dieser ehco geändert werden muss. Bitte sagen Sie mir, wie ich ihn ändern kann.
fwrite(STDOUT,$byte); funktioniert nicht, selbst wenn Sie echo $byte; ersetzen.

Nach einigen Modifikationen sind wir nicht mehr weit vom Erfolg entfernt.

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

用一个只包含换行键的文件测试
xxd  -b ./test.txt
0000000: 00001010  

我的程序运行结果是:
10100</code>

Der Parameter fopen mode wird nach dem Basismodus in b geändert, z. B. rb, der zur Unterscheidung von Binärstreams und Textdateien verwendet wird.

Entsprechend können Sie mit „b“ auch den Binärmodus erzwingen, sodass die Daten nicht konvertiert werden. Um diese Tags zu verwenden, verwenden Sie entweder „b“ oder „t“ als letztes Zeichen des Modusparameters

Base64-Kodierung auf der Serverseite und Base64-Dekodierung auf der Clientseite

<code><?php
    $target="test.txt";
    $file_handle = fopen($target, "rb");
    while (!feof($file_handle)) {
       $byte = fread($file_handle,1);
       fwrite(STDOUT,$byte);
    }
    fclose($file_handle );
?></code>

Verwenden Sie PHP-Ausgabe- und Eingabestreams für den Betrieb

<code>function strToTwo($str)
{
    $res = '';
    $len = strlen($str);
    for($i = 0; $i < $len; $i++) {
        $tmp = base_convert(ord($str[$i]), 10, 2);
        $res .= $tmp . ' ';
    }
    
    return trim($res);
}

var_dump(strToTwo("严"));</code>

UTF8-Kodierung. Diesmal sollte es stimmen.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn