Home  >  Article  >  Backend Development  >  Write the binary form of the file using php

Write the binary form of the file using php

WBOY
WBOYOriginal
2016-08-18 09:16:081344browse

xxd filename
can display the binary form of a file on the terminal without considering the encoding of the file.
How to achieve the same function using php?
1.fopen
2.fread
3.ehco doesn’t work. It cannot display the binary of the text. What is displayed is the text. How can I do this?

I wrote a piece of code

<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>

I found that it doesn’t work. What is displayed is the character itself, not the binary expression of the character.
It is expected that this ehco will need to be modified. Please tell me how to modify it.
fwrite(STDOUT,$byte); does not work even if you replace echo $byte;.

After revising it, it’s not far from success.

<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>

Reply content:

xxd filename
can display the binary form of a file on the terminal without considering the encoding of the file.
How to achieve the same function using php?
1.fopen
2.fread
3.ehco doesn’t work. It cannot display the binary of the text. What is displayed is the text. How can I do this?

I wrote a piece of code

<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>

I found that it doesn’t work. What is displayed is the character itself, not the binary expression of the character.
It is expected that this ehco will need to be modified. Please tell me how to modify it.
fwrite(STDOUT,$byte); does not work even if you replace echo $byte;.

After revising it, it’s not far from success.

<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>

The

fopen mode parameter is changed to b after the basic mode, such as rb, which is used to distinguish binary streams and text files.

Correspondingly, you can also use 'b' to force binary mode so that the data will not be converted. To use these tags, either use 'b' or 't' as the last character of the mode parameter

base64 encoding on the server side and base64 decoding on the client side

<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>

Operation using PHP output and input streams

<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 encoding. It should be right this time.

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn