Maison > Article > développement back-end > 用php写出文件的二进制形式
xxd filename
可以将一个文件的二进制形式显示在终端,无需考虑文件是什么形式的编码。
如何用php实现同样的功能?
1.fopen
2.fread
3.ehco不行,不能显示文本的二进制,显示的是文本,请问,这里如何做?
我写了一段代码
<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>
发现不行,显示的是字符本身,不是字符的二进制表达。
预计这个ehco要改,请问,如何修改。
fwrite(STDOUT,$byte); 替换 echo $byte; 也不行。
修改了一下,离成功不远了。
<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
可以将一个文件的二进制形式显示在终端,无需考虑文件是什么形式的编码。
如何用php实现同样的功能?
1.fopen
2.fread
3.ehco不行,不能显示文本的二进制,显示的是文本,请问,这里如何做?
我写了一段代码
<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>
发现不行,显示的是字符本身,不是字符的二进制表达。
预计这个ehco要改,请问,如何修改。
fwrite(STDOUT,$byte); 替换 echo $byte; 也不行。
修改了一下,离成功不远了。
<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>
fopen mode参数基本模式后加改为b,如rb
,用来区分二进制流和文本文件。
与此对应还可以使用 'b' 来强制使用二进制模式,这样就不会转换数据。要使用这些标记,要么用 'b' 或者用 't'作为 mode 参数的最后一个字符
在服务器端进行base64编码,在客户端端进行base64解码
<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>
使用PHP输出输入流进行操作
<code>function strToTwo($str) { $res = ''; $len = strlen($str); for($i = 0; $i </code>
UTF8编码下的。这次应该对了。