php解析二进制
❶ php 从数据库读取2进制数据 怎么存储,存储好了怎么转化成能用的类型呢
二进制的数据时binary类型,有专门的函数处理这类型的数据的
❷ PHP如何将从二进制文件中读取的字节转换为数字
bindec函数可转换二进制数为十进制数
❸ PHP关于获取二进制数据流转换为文件的方法
$content=$_POST['data'];
$fp=fopen('/tmp/newfile.bin','w');
fwrite($fp,$content);
以上例子是在data参数上传二进制,并保存到/tmp/newfile.bin中,解析json用json_decode,然后把二进制的那个值赋给content就可以
❹ php 怎么把字符串转化为二进制流
header("Content-type: text/html; charset=utf-8");
/**
* 将字符串转换成二进制
* @param type $str
* @return type
*/
function StrToBin($str){
//1.列出每个字符
$arr = preg_split('/(?
//2.unpack字符
foreach($arr as &$v){
$temp = unpack('H*', $v); $v = base_convert($temp[1], 16, 2);
unset($temp);
}
return join(' ',$arr);
}
/**
* 讲二进制转换成字符串
* @par
❺ 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
$files = array( /test jpg test png )
$fileTypes = array(
=> exe
=> midi
=> zip
=> rar
=> jpg
=> gif
=> bmp
=> png
)
foreach($files as $file) {
$fp = fopen($file rb )
$bin = fread($fp ) // 只读头两个字节
fclose($fp)
$strInfo = @unpack( C chars $bin)
$typeCode = intval($strInfo[ chars ] $strInfo[ chars ])
$fileType = isset($fileTypes[$typeCode]) ? $fileTypes[$typeCode] : unknown ;
echo $file type : <b> $fileType </b> code : <b> $fileType </b><br /> ;
lishixin/Article/program/PHP/201311/20841
❼ 在PHP中,字母a和字母A的二进制,八进制,十进制,十六进制的写法是什么
字母"a":
二进制:1100001
八进制:141
十进制:97
十六进制:61
你可以通过以下代码来查看:
<?php
$num=ord('a');
//二进制
echodecbin($num),',';
//八进制
echodecoct($num),',';
//十进制
echo$num,',';
//十六进制
echodechex($num),',';
❽ php如何打开在mysql中取出的二进制数据
你好,像制作验证码那样
把字节流扔进一个图片类型亏袜的文件里,然后就可以了
希望大高能解决你的问题,望销仿激采纳
❾ php中能输出二进制数据么
可以的。
可以用一个十进制二进制的函数decbin(),生成的是一个字符串,直接输出即可
❿ 怎样在PHP中把16进制HEX数据转换为2进制数据呢
十六进制转为二进制有两种理解方法,第一是十六进制字符串转二进制字符串,第二是十六进制数转二进制数,下面分别介绍2种转换方法:
1.hex2bin函数可以将十六进制字符串转换为二进制字符串,详细用法如下:
hex2bin — 转换十六进制字符串为二进制字符串
stringhex2bin(string$data)
转换十六进制字符串为二进制字符串。
参数:
data:十六进制表示的数据
返回值:
返回给定数据的二进制表示 或者在失败时返回 FALSE。
异常:
如果输入的十六进制字符串是奇数长数或者无效的十六进制字符串将会抛出E_WARNING 级别的错误。
示例:
$hex=hex2bin("");
echo$hex;//examplehexdata(其中16进制代表的是ascii码)
2.base_convert是真正意义上的进制转换函数
base_convert — 在任意进制之间转换数字
stringbase_convert(string$number,int$frombase,int$tobase)
返回一字符串,包含 number以 tobase 进制的表示。number 本身的进制由frombase指定。frombase 和 tobase 都只能在2 和 36 之间(包括 2 和 36)。高于十进制的数字用字母 a-z 表示,例如a 表示 10,b 表示 11 以及 z 表示 35。
参数:
number:要转换的数字
frombase:原始进制
tobase:转换后的进制
示例:
$hexadecimal='A37334';
echobase_convert($hexadecimal,16,2);//101000110111001100110100