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