成都网站建设设计

将想法与焦点和您一起共享

php二进制文件数据解析 php编译成二进制文件

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中怎么以二进制形式表示数字?

需要准备的材料分别是:电脑、php编辑器、浏览器。

1、首先,打开php编辑器,新建php文件,例如:index.php。

2、以二进制数1110101为例,在index.php中,输入代码:$a = 0b1110101;echo $a;。

3、浏览器运行index.php页面,此时会看到二进制数1110101被成功表示,并以十进制形式打印了出来。

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

?php

$bin= bstr2bin($json);

file_put_contents('../somefold/',$bin);

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://chengdu.cdxwcx.cn/article/ddddgod.html