Write the binary form of the file using php

WBOY
Release: 2016-08-18 09:16:08
Original
1357 people have browsed it

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>
Copy after login
Copy after login

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>
Copy after login
Copy after login

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>
Copy after login
Copy after login

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>
Copy after login
Copy after login

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>
Copy after login

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>
Copy after login

UTF8 encoding. It should be right this time.

Related labels:
php
source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template