Home > Article > Backend Development > Write the binary form of the file using php
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>
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.