大整數(shù)需要用GMP模塊,或者自己算法好可以寫(xiě)簡(jiǎn)單的累加,
創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿(mǎn)足客戶(hù)于互聯(lián)網(wǎng)時(shí)代的濮陽(yáng)縣網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
在php.ini中開(kāi)啟模塊extension=php_gmp.dll
?php
$n = gmp_init('58915248108339c6ddca5553e9f266124e7af7c8',16); //16進(jìn)制輸入
$n = gmp_add($n,1); //加1
echo gmp_strval($n,16).'br/'; //16進(jìn)制顯示
$n = gmp_add($n,13869656); //加法
echo gmp_strval($n,16).'br/'; //16進(jìn)制顯示
輸出
58915248108339c6ddca5553e9f266124e7af7c9
58915248108339c6ddca5553e9f266124f4e9a21
把文件里面的每一個(gè)字節(jié)的ascii碼轉(zhuǎn)成16進(jìn)制就可以了,如下:
$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);
十六進(jìn)制轉(zhuǎn)為二進(jìn)制有兩種理解方法,第一是十六進(jìn)制字符串轉(zhuǎn)二進(jìn)制字符串,第二是十六進(jìn)制數(shù)轉(zhuǎn)二進(jìn)制數(shù),下面分別介紹2種轉(zhuǎn)換方法:
1.hex2bin函數(shù)可以將十六進(jìn)制字符串轉(zhuǎn)換為二進(jìn)制字符串,詳細(xì)用法如下:
hex2bin — 轉(zhuǎn)換十六進(jìn)制字符串為二進(jìn)制字符串
string?hex2bin(string?$data)
轉(zhuǎn)換十六進(jìn)制字符串為二進(jìn)制字符串。
參數(shù):
data:十六進(jìn)制表示的數(shù)據(jù)
返回值:
返回給定數(shù)據(jù)的二進(jìn)制表示 ?或者在失敗時(shí)返回 FALSE。
異常:
如果輸入的十六進(jìn)制字符串是奇數(shù)長(zhǎng)數(shù)或者無(wú)效的十六進(jìn)制字符串將會(huì)拋出E_WARNING 級(jí)別的錯(cuò)誤。
示例:
$hex?=?hex2bin("6578616d706c65206865782064617461");
echo?$hex;//example?hex?data(其中16進(jìn)制代表的是ascii碼)
2.base_convert是真正意義上的進(jìn)制轉(zhuǎn)換函數(shù)
base_convert — 在任意進(jìn)制之間轉(zhuǎn)換數(shù)字
string?base_convert(?string?$number,?int?$frombase,?int?$tobase)
返回一字符串,包含 number以 tobase 進(jìn)制的表示。number 本身的進(jìn)制由frombase指定。frombase 和 tobase 都只能在2 和 36 之間(包括 2 和 36)。高于十進(jìn)制的數(shù)字用字母 a-z 表示,例如a 表示 10,b 表示 11 以及 z 表示 35。
參數(shù):
number:要轉(zhuǎn)換的數(shù)字
frombase:原始進(jìn)制
tobase:轉(zhuǎn)換后的進(jìn)制
示例:
$hexadecimal?=?'A37334';
echo?base_convert($hexadecimal,?16,?2);//101000110111001100110100
還有 hexdec 這個(gè)函數(shù)number hexdec ( string $hex_string )
Example #1 hexdec() 例子
?php
var_dump(hexdec("See"));
var_dump(hexdec("ee"));
// both print "int(238)"
var_dump(hexdec("that")); // print "int(10)"
var_dump(hexdec("a0")); // print "int(160)"
?
//字符串轉(zhuǎn)換成16進(jìn)制
function str2hex($str){
$hex = '';
for($i=0,$length=mb_strlen($str); $i$length; $i++){
$hex .= dechex(ord($str{$i}));
}
return $hex;
}
//16進(jìn)制轉(zhuǎn)換成字符串
function hex2str($hex){
$str = '';
$arr = str_split($hex, 2);
foreach($arr as $bit){
$str .= chr(hexdec($bit));
}
return $str;
}
function test(){
//utf8字符測(cè)試
$str = '中文';
echo mb_strlen($str);
echo '';
$hex = str2hex($str);
echo $hex;
echo '';
$dec = hex2str($hex);
echo $dec;
echo "";
echo "hr";
//gbk測(cè)試
$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 "";
}