新聞中心
php如何打開在mysql中取出的二進制數(shù)據(jù)
你好,像制作驗證碼那樣
德清網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、APP開發(fā)、響應式網(wǎng)站等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)公司自2013年創(chuàng)立以來到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設就選創(chuàng)新互聯(lián)公司。
把字節(jié)流扔進一個圖片類型的文件里,然后就可以了
希望能解決你的問題,望采納
怎樣在PHP中把16進制HEX數(shù)據(jù)轉換為2進制數(shù)據(jù)呢?
十六進制轉為二進制有兩種理解方法,第一是十六進制字符串轉二進制字符串,第二是十六進制數(shù)轉二進制數(shù),下面分別介紹2種轉換方法:
1.hex2bin函數(shù)可以將十六進制字符串轉換為二進制字符串,詳細用法如下:
hex2bin — 轉換十六進制字符串為二進制字符串
string?hex2bin(string?$data)
轉換十六進制字符串為二進制字符串。
參數(shù):
data:十六進制表示的數(shù)據(jù)
返回值:
返回給定數(shù)據(jù)的二進制表示 ?或者在失敗時返回 FALSE。
異常:
如果輸入的十六進制字符串是奇數(shù)長數(shù)或者無效的十六進制字符串將會拋出E_WARNING 級別的錯誤。
示例:
$hex?=?hex2bin("6578616d706c65206865782064617461");
echo?$hex;//example?hex?data(其中16進制代表的是ascii碼)
2.base_convert是真正意義上的進制轉換函數(shù)
base_convert — 在任意進制之間轉換數(shù)字
string?base_convert(?string?$number,?int?$frombase,?int?$tobase)
返回一字符串,包含 number以 tobase 進制的表示。number 本身的進制由frombase指定。frombase 和 tobase 都只能在2 和 36 之間(包括 2 和 36)。高于十進制的數(shù)字用字母 a-z 表示,例如a 表示 10,b 表示 11 以及 z 表示 35。
參數(shù):
number:要轉換的數(shù)字
frombase:原始進制
tobase:轉換后的進制
示例:
$hexadecimal?=?'A37334';
echo?base_convert($hexadecimal,?16,?2);//101000110111001100110100
php中能輸出二進制數(shù)據(jù)么
可以的。
可以用一個十進制二進制的函數(shù)decbin(),生成的是一個字符串,直接輸出即可
怎樣用php讀取sqlserver中存儲的二進制圖片字段?求高手
直接讀取出來放過去,但是要注意mysql存儲的格式是類型:mediumblob
要變成圖片,還需要php代碼轉化一下
PHP關于獲取二進制數(shù)據(jù)流轉換為文件的方法
?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接收二進制文件怎么替換里面的內(nèi)容
php接收二進制文件怎么替換里面的內(nèi)容
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過來的二進制原始數(shù)據(jù)
$file = fopen("./upload/".$filename,"w");//打開文件準備寫入
fwrite($file,$raw);//寫入
fclose($file);//關閉
?
接收的二進制文件中非標準字符(0x7F)的字節(jié)被替換為三個字節(jié),比如E2替換為EF 9F A2
現(xiàn)在我想在Php接收到文件之后還原回去,把EF 9F A2替換為E2,請問這個怎么實現(xiàn)?
非常感謝!
PHP 二進制
------解決方案--------------------
他的數(shù)據(jù)轉換規(guī)則是這樣的:
文件頭不變,文件頭多長不清楚,圖上到0050h都一樣的
=7F的字節(jié),因為utf-8也一樣,可以認為也轉換了utf-8
=80的字節(jié),高位加上F7,再轉utf-8,例如E2就變成F7E2然后轉utf-8成為EF 9F A2
至少他圖中E2/FB/91/B2/81...都滿足這個規(guī)則
------解決方案--------------------
本帖最后由 xuzuning 于 2013-05-02 15:35:02 編輯
用正則可這樣寫
假定數(shù)據(jù)已把存在變量 $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讀寫二進制數(shù)據(jù) php 字符串轉二進制
URL標題:http://fisionsoft.com.cn/article/docdpgd.html