dechex()所能转换的最大数值为十进制的 2147483647,其结果为 "7fffffff"。
最近在做OpenSSL的项目,函数库里面有个openssl_x509_parse(),它分解出来的证书的序列号是long型的,数值很大,例如"9126364204485167585",我想把它还原成16进制的序列号,各位大虾有没有什么好办法呀?
最近在做OpenSSL的项目,函数库里面有个openssl_x509_parse(),它分解出来的证书的序列号是long型的,数值很大,例如"9126364204485167585",我想把它还原成16进制的序列号,各位大虾有没有什么好办法呀?
static char Buffer[sizeof( unsigned long ) * 2 + 1];
int i;for( i = sizeof( unsigned long ) * 2 - 1; i >= 0; --i )
{
Buffer[i] = "0123456789ABCDEF"[Value % 16];
Value /= 16;
}
return Buffer;}
<?php
function new_dechex($num)
{
//$sixteen = array("A"=>10, "B"=>11, "C"=>12, "D"=>13, "E"=>14, "F"=>15);
$sixteen = array(10=>"A", 11=>"B", 12=>"C", 13=>"D", 14=>"E", 15=>"F");
$s = $num;
while($s > 0)
{
$y[] = $s%16;
$s = floor($s/16);
} $str = "";
$y_n = count($y);
for($i=$y_n-1;$i>=0;$i--)
{
if(array_key_exists($y[$i], $sixteen))
{
$str .= $sixteen[$y[$i]];
}
else $str .= $y[$i];
}
//return "0x".$str;
return $str;
}
echo new_dechex(9126364204485167585)." <br>". new_dechex(2147483647);
?>
bcmath可以处理几乎无限大的数
http://ca.php.net/manual/en/book.bc.php