當前位置:首頁 » 編程語言 » php二進制文件

php二進制文件

發布時間: 2022-10-22 06:16:00

『壹』 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如何將從二進制文件中讀取的位元組轉換為數字

bindec函數可轉換二進制數為十進制數

『叄』 PHP關於獲取二進制數據流轉換為文件的方法

$content=$_POST['data'];
$fp=fopen('/tmp/newfile.bin','w');
fwrite($fp,$content);

以上例子是在data參數上傳二進制,並保存到/tmp/newfile.bin中,解析json用json_decode,然後把二進制的那個值賦給content就可以

『肆』 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;
}

『伍』 php接收二進制文件怎麼替換裡面的內容

將文件定位到你存整數/字元串的位置,讀取出來再轉換就行。例如byte[]buf=newbyte[4];fs.Read(buf,0,4);Console.WriteLine(BitConverter.ToInt32(buf));

『陸』 php裡面如何取文件(可安全用於二進制文件)

可以使用文件函數fread

『柒』 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

$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);

?>

熱點內容
oracle測試sql 發布:2025-07-08 03:16:54 瀏覽:973
php壁紙源碼 發布:2025-07-08 03:04:26 瀏覽:320
android應用層 發布:2025-07-08 02:42:32 瀏覽:301
大唐存儲銷量 發布:2025-07-08 02:41:11 瀏覽:582
腳本怎麼打開 發布:2025-07-08 02:41:06 瀏覽:822
貴州電信iPtv升級伺服器地址 發布:2025-07-08 02:38:48 瀏覽:412
電腦怎麼鏈接本地伺服器 發布:2025-07-08 02:34:22 瀏覽:147
android調試webview 發布:2025-07-08 02:26:28 瀏覽:358
壓縮袋鞋子 發布:2025-07-08 02:21:30 瀏覽:752
為什麼安卓打吃雞感覺有延遲 發布:2025-07-08 02:09:32 瀏覽:168