十六進制轉為二進制有兩種理解方法,第一是十六進制字符串轉二進制字符串,第二是十六進制數(shù)轉二進制數(shù),下面分別介紹2種轉換方法:

成都創(chuàng)新互聯(lián)成都網(wǎng)站建設按需策劃設計,是成都網(wǎng)站制作公司,為成都水泥攪拌車提供網(wǎng)站建設服務,有成熟的網(wǎng)站定制合作流程,提供網(wǎng)站定制設計服務:原型圖制作、網(wǎng)站創(chuàng)意設計、前端HTML5制作、后臺程序開發(fā)等。成都網(wǎng)站營銷推廣熱線:18982081108
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
整形轉化成?2二進制?可以用??base_convert:
$str?=?0x8000;
echo?$str2?=?base_convert($str,?16,?2);
echo?'br';
echo?base_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?"\nbr轉化為二進制?...";
$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);
function?bin2bstr($input)
//?Convert?a?binary?expression?(e.g.,?"100111")?into?a?binary-string
{
if?(!is_string($input))?return?null;?//?Sanity?check
//?Pack?into?a?string
$input?=?str_split($input,?4);
$str?=?'';
foreach?($input?as?$v)
{
$str?.=?base_convert($v,?2,?16);
}
$str?=??pack('H*',?$str);
return?$str;
}
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;
}
把文件里面的每一個字節(jié)的ascii碼轉成16進制就可以了,如下:
$content?=?file_get_contents("myfile");
$hex?=?"";
for($i=0;$i=strlen($content);$i++){
$asc?=?ord(substr($content,$i,1));
$hex?.=?dechex($asc);
}
file_put_contents("mynewfile",$hex);
//字符串轉換成16進制
function str2hex($str){
$hex = '';
for($i=0,$length=mb_strlen($str); $i$length; $i++){
$hex .= dechex(ord($str{$i}));
}
return $hex;
}
//16進制轉換成字符串
function hex2str($hex){
$str = '';
$arr = str_split($hex, 2);
foreach($arr as $bit){
$str .= chr(hexdec($bit));
}
return $str;
}
function test(){
//utf8字符測試
$str = '中文';
echo mb_strlen($str);
echo '';
$hex = str2hex($str);
echo $hex;
echo '';
$dec = hex2str($hex);
echo $dec;
echo "";
echo "hr";
//gbk測試
$gbkstr = mb_convert_encoding($str,'GBK','UTF-8');
echo mb_strlen($gbkstr);
echo '';
$hex = str2hex($gbkstr);
echo $hex;
echo '';
$dec = mb_convert_encoding(hex2str($hex), 'UTF-8', 'GBK');
echo $dec;
echo "";
}
網(wǎng)站名稱:php怎么保存hex數(shù)據(jù)的簡單介紹
分享URL:http://chinadenli.net/article4/dsipooe.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設、商城網(wǎng)站、網(wǎng)站設計公司、網(wǎng)站制作、標簽優(yōu)化、關鍵詞優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)