首页 > 后端开发 > php教程 > 用php写出文件的二进制形式

用php写出文件的二进制形式

WBOY
发布: 2016-08-18 09:16:08
原创
1359 人浏览过

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编码下的。这次应该对了。

相关标签:
php
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板