php二進制流
1. 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;
2. php如何將二進制字元串轉換成二進制流
當字元串處理轉換就行
/**
* 將字元串轉換成二進制
* @param type $str
* @return type
*/
function StrToBin($str){
//1.列出每個字元
$arr = preg_split('/(?<!^)(?!$)/u', $str);
//2.unpack字元
foreach($arr as &$v){
$temp = unpack('H*', $v); $v = base_convert($temp[1], 16, 2);
unset($temp);
}
return join(' ',$arr);
}
3. 關於php 接收二進制流轉換成圖片
比如此類名字叫做imageUpload.class.php
那麼首先是要引入該類文件用include("imageUpload.class.php");
第二步是實例化該類$inputimage = new imageUpload("input.jpg","./");
第三部是調用二進制轉換成圖片的方法了,$inputimage->stream2Image();
實例化該類需要傳兩個參數,第一個是需要保存的圖片名字,第二個是圖片保存路徑地址。
4. php如何將webservice返回的二進制流保存到本地圖片
前幾天 剛弄的 app提交圖片的介面,二進制那種比較麻煩,
讓app那端也用 瀏覽器那種方式提交過來,php正常接收就ok
然後返回地址、圖片屬性,(這邊不用保存到本地吧,app那端應該是保存到本地),多個的話循環一下也行,也不慢
最後app把多個圖片以及表情、內容什麼的提交過來 ,然後保存到資料庫 應該是 ok的 ,如果 單獨保存圖片 正則匹配一下!!!
5. php二進制流輸出文件出錯
你要的內容太多了,只能簡單的說下。fopen (PHP 3, PHP 4, PHP 5)fopen -- 打開文件或者 URL 說明resource fopen ( string filename, string mode [, bool use_include_path [, resource zcontext]] )fopen() 將 filename 指定的名字資源綁定到一個流上。如果 filename 是 "scheme://..." 的格式,則被當成一個 URL,PHP 將搜索協議處理器(也被稱為封裝協議)來處理此模式。如果該協議尚未注冊封裝協議,PHP 將發出一條消息來幫助檢查腳本中潛在的問題並將 filename 當成一個普通的文件名繼續執行下去。 如果 PHP 認為 filename 指定的是一個本地文件,將嘗試在該文件上打開一個流。該文件必須是 PHP 可以訪問的,因此需要確認文件訪問許可權允許該訪問。如果激活了安全模式或者 open_basedir 則會應用進一步的限制。 如果 PHP 認為 filename 指定的是一個已注冊的協議,而該協議被注冊為一個網路 URL,PHP 將檢查並確認 allow_url_fopen 已被激活。如果關閉了,PHP 將發出一個警告,而 fopen 的調用則失敗。 注意: 所支持的協議列表見附錄 N。某些協議(也被稱為 wrappers)支持 context 和/或 php.ini 選項。參見相應的頁面哪些選項可以被設定(例如 php.ini 中用於 http wrapper 的 user_agent 值)。 注意: 對 context 的支持是 PHP 5.0.0 添加的。有關 context 的說明見參考 CLX, Stream Functions。注意: 自 PHP 4.3.2 起,對所有區別二進制和文本模式的平台默認模式都被設為二進制模式。如果在升級後腳本碰到問題,嘗試暫時使用 't' 標記,直到所有的腳本都照以下所說的改為更具移植性以後。 mode 參數指定了所要求到該流的訪問類型。可以是以下: 表 1. fopen() 中 mode 的可能值列表mode說明'r'只讀方式打開,將文件指針指向文件頭。 'r+'讀寫方式打開,將文件指針指向文件頭。 'w'寫入方式打開,將文件指針指向文件頭並將文件大小截為零。如果文件不存在則嘗試創建之。 'w+'讀寫方式打開,將文件指針指向文件頭並將文件大小截為零。如果文件不存在則嘗試創建之。 'a'寫入方式打開,將文件指針指向文件末尾。如果文件不存在則嘗試創建之。 'a+'讀寫方式打開,將文件指針指向文件末尾。如果文件不存在則嘗試創建之。 'x'創建並以寫入方式打開,將文件指針指向文件頭。如果文件已存在,則 fopen() 調用失敗並返回 FALSE,並生成一條 E_WARNING 級別的錯誤信息。如果文件不存在則嘗試創建之。這和給 底層的 open(2) 系統調用指定 O_EXCL|O_CREAT 標記是等價的。此選項被 PHP 4.3.2 以及以後的版本所支持,僅能用於本地文件。 'x+'創建並以讀寫方式打開,將文件指針指向文件頭。如果文件已存在,則 fopen() 調用失敗並返回 FALSE,並生成一條 E_WARNING 級別的錯誤信息。如果文件不存在則嘗試創建之。這和給 底層的 open(2) 系統調用指定 O_EXCL|O_CREAT 標記是等價的。此選項被 PHP 4.3.2 以及以後的版本所支持,僅能用於本地文件。 注意: 不同的操作系統家族具有不同的行結束習慣。當寫入一個文本文件並想插入一個新行時,需要使用符合操作系統的行結束符號。基於 Unix 的系統使用 \n 作為行結束字元,基於 Windows 的系統使用 \r\n 作為行結束字元,基於 Macintosh 的系統使用 \r 作為行結束字元。 如果寫入文件時使用了錯誤的行結束符號,則其它應用程序打開這些文件時可能會表現得很怪異。 Windows 下提供了一個文本轉換標記('t')可以透明地將 \n 轉換為 \r\n。與此對應還可以使用 'b' 來強制使用二進制模式,這樣就不會轉換數據。要使用這些標記,要麼用 'b' 或者用 't' 作為
如果幫助到您,請記得採納為滿意答案哈,謝謝!祝您生活愉快! vae.la
6. php怎樣將二進制流存到文件中
整形轉化成2二進制可以用base_convert:
$str=0x8000;
echo$str2=base_convert($str,16,2);
echo'<br>';
echobase_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" <br>轉化為二進制...";
$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);
functionbin2bstr($input)
//Convertabinaryexpression(e.g.,"100111")intoabinary-string
{
if(!is_string($input))returnnull;//Sanitycheck
//Packintoastring
$input=str_split($input,4);
$str='';
foreach($inputas$v)
{
$str.=base_convert($v,2,16);
}
$str=pack('H*',$str);
return$str;
}
functionbstr2bin($input)
//Binaryrepresentationofabinary-string
{
if(!is_string($input))returnnull;//Sanitycheck
//Unpackasahexadecimalstring
$value=unpack('H*',$input);
//Outputbinaryrepresentation
$value=str_split($value[1],1);
$bin='';
foreach($valueas$v)
{
$b=str_pad(base_convert($v,16,2),4,'0',STR_PAD_LEFT);
$bin.=$b;
}
return$bin;
}
7. php如何生成二進制流文件
參考代碼:
<?php
$file="images/login.png";
$content = $GLOBALS['HTTP_RAW_POST_DATA'];
if(empty($content)){
$content = file_get_contents('php://input');
}
$result = file_put_contents($file, $content, true);
var_mp($result);
?>
8. PHP關於獲取二進制數據流轉換為文件的方法
$content=$_POST['data'];
$fp=fopen('/tmp/newfile.bin','w');
fwrite($fp,$content);
以上例子是在data參數上傳二進制,並保存到/tmp/newfile.bin中,解析json用json_decode,然後把二進制的那個值賦給content就可以
9. 請教php如何實現傳輸二進制位元組流到MTK客戶
MTK是啥?
傳輸二進制位元組流,可以考慮用websocket。
10. php 怎麼將二進制流轉換為base64編碼
沒有特別作用,因為任何人只要想解都能解開。 BASE64 是將二進制數據 (8位)編碼為64個可顯示的 ASCII 字元,3個 octet 編碼成 4 個 octet。因此既不是壓縮,也不是加密。估計把php編碼成base64隻是為了讓人讀起來麻煩一點。