php二进制数据写入文件 php生成二进制数据流

PHP将数据写入txt文件

//记录返回值

创新互联建站从2013年成立,先为玉环等服务建站,玉环等地企业,进行企业商务咨询服务。为玉环企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

    $write_data_a = [

        'html_url'  =  $getUrl,

        'ip'    = $this-get_real_ip(),

        'time'  =  date("Y-m-d H:i:s",time()),

        'res'   = $response

    ];

//转化为JSON

    $write_data_a = json_encode($write_data_a) . '||' . "\n";

    $date = date("Y-m-d", time());

//项目路径目录,判断是否存在,不存在则创建

    $lujing = "./360_mobile_res_sd";

    if(!is_dir($lujing)){

        mkdir(iconv("UTF-8", "GBK", $lujing),0777,true);

    }

//文件,判断是否存在,不存在则创建

    $TxtFileName = "./360_mobile_res_sd/" . $date . "_2.txt";

    //以读写方式打写指定文件,如果文件不存则创建

    if(file_exists($TxtFileName))

    {

//存在,追加写入内容

        file_put_contents($TxtFileName, $write_data_a, FILE_APPEND);

    }

    else

    {

//不存在,创建并写入

        if( ($TxtRes=fopen ($TxtFileName,"w+")) === FALSE){

            exit();

        }

        if(!fwrite ($TxtRes,$write_data_a)){ //将信息写入文件

            fclose($TxtRes);

            exit();

        }

        fclose ($TxtRes); //关闭指针

    }

PHP关于获取二进制数据流转换为文件的方法

$content = $_POST['data'];

$fp = fopen('/tmp/newfile.bin','w');

fwrite($fp,$content);

以上例子是在data参数上传二进制,并保存到/tmp/newfile.bin中,解析json用json_decode,然后把二进制的那个值赋给content就可以

php接收二进制文件怎么替换里面的内容

php接收二进制文件怎么替换里面的内容

php接收二进制文件如下:

?php

header('Content-type: text/html; charset=utf-8');

error_reporting(0);

$filename = $_GET["filename"];

$filesize = $_GET["filesize"];

$xmlstr = $GLOBALS[HTTP_RAW_POST_DATA];//$_POST["data"];//

if(empty($xmlstr)) $xmlstr = file_get_contents('php://input');

$raw = $xmlstr;//得到post过来的二进制原始数据

$file = fopen("./upload/".$filename,"w");//打开文件准备写入

fwrite($file,$raw);//写入

fclose($file);//关闭

?

接收的二进制文件中非标准字符(0x7F)的字节被替换为三个字节,比如E2替换为EF 9F A2

现在我想在Php接收到文件之后还原回去,把EF 9F A2替换为E2,请问这个怎么实现?

非常感谢!

PHP 二进制

------解决方案--------------------

他的数据转换规则是这样的:

文件头不变,文件头多长不清楚,图上到0050h都一样的

=7F的字节,因为utf-8也一样,可以认为也转换了utf-8

=80的字节,高位加上F7,再转utf-8,例如E2就变成F7E2然后转utf-8成为EF 9F A2

至少他图中E2/FB/91/B2/81...都满足这个规则

------解决方案--------------------

本帖最后由 xuzuning 于 2013-05-02 15:35:02 编辑

用正则可这样写

假定数据已把存在变量 $s 中,则

$s = preg_replace_callback('/[\xef]../', 'foo', $s);

function foo($r) {

$c = (ord($r[0]{1}) 0x03) 6;

$c += (ord($r[0]{2}) 0x3f);

return chr($c);

}

php怎样将二进制流存到文件中?

整形转化成 2二进制 可以用  base_convert:

$str = 0x8000;

echo $str2 = base_convert($str, 16, 2);

echo 'br';

echo base_convert($str2, 2, 16);

[code]

字符串 文件等 可以考虑用 pack 和 unpack 转化成二进制

[code=PHP]

$file1 = 'F:/46.gif';           //随便拷一个图片作为测试用

$file2 = 'F:/test.txt';         //生成的二进制流保存在这个文件里

$file3 = 'F:/47.gif';           //由二进制流还原成的文件

$size = filesize($file1);

echo '文件大小为:'.$size;

echo "\nbr转化为二进制 ...";

$content = file_get_contents($file1);

$content = bstr2bin($content);

$fp = fopen($file2, 'w');

fwrite($fp, $content);

fclose($fp);

$size2 = filesize($file2);

echo '转化成二进制后文件大小为:'.$size2;

$content = bin2bstr($content);

$fp = fopen($file3, 'w');

fwrite($fp, $content);

fclose($fp);

function bin2bstr($input)

// Convert a binary expression (e.g., "100111") into a binary-string

{

if (!is_string($input)) return null; // Sanity check

// Pack into a string

$input = str_split($input, 4);

$str = '';

foreach ($input as $v)

{

$str .= base_convert($v, 2, 16);

}

$str =  pack('H*', $str);

return $str;

}

function bstr2bin($input)

// Binary representation of a binary-string

{

if (!is_string($input)) return null; // Sanity check

// Unpack as a hexadecimal string

$value = unpack('H*', $input);

// Output binary representation

$value = str_split($value[1], 1);

$bin = '';

foreach ($value as $v)

{

$b = str_pad(base_convert($v, 16, 2), 4, '0', STR_PAD_LEFT);

$bin .= $b;

}

return $bin;

}


网站名称:php二进制数据写入文件 php生成二进制数据流
网站地址:http://pwwzsj.com/article/hpsohh.html