2011-12-16 13 views
2

BCMathを使用している間、私はこのエラーを持っています -BCMathを使用してエラー - 未定義のメソッドはPEAR_Errorに呼び出し:: int2bin()

Fatal error: Call to undefined method PEAR_Error::int2bin() in login.php on line 23

私は一緒にCrypt_RSAとBCMathを使用しようとしています。ここに私のコードです -

require_once("Crypt/RSA/MathLoader.php"); 
$wrapper_name = “BCMath”; 
$math_obj = &Crypt_RSA_MathLoader::loadWrapper($wrapper_name); 

$a = $math_obj->int2bin("6465130539297209249500692895930266194225707667564124686892613724438982507603215802636578141547940687986170708901198917318074984831856438115515743080726101"); 

答えて

1

私はほんの数日前にPHPでいくつかの暗号化をしていたとき、私は同様の問題に遭遇しました。 10進数を2進数に変換する必要がありました。私が行ったのは、それを16進数に変換し、16進数でエンコードされたデータとして展開することでした。

<?php 

$a = pack("H*", convBase('6465130539297209249500692895930266194225707667564124686892613724438982507603215802636578141547940687986170708901198917318074984831856438115515743080726101', '', 'ABCDEF')); 

function convBase($numberInput, $fromBaseInput, $toBaseInput) 
{ 
    if ($fromBaseInput==$toBaseInput) return $numberInput; 
    $fromBase = str_split($fromBaseInput,1); 
    $toBase = str_split($toBaseInput,1); 
    $number = str_split($numberInput,1); 
    $fromLen=strlen($fromBaseInput); 
    $toLen=strlen($toBaseInput); 
    $numberLen=strlen($numberInput); 
    $retval=''; 
    if ($toBaseInput == '') 
    { 
     $retval=0; 
     for ($i = 1;$i <= $numberLen; $i++) 
      $retval = bcadd($retval, bcmul(array_search($number[$i-1], $fromBase),bcpow($fromLen,$numberLen-$i))); 
     return $retval; 
    } 
    if ($fromBaseInput != '') 
     $base10=convBase($numberInput, $fromBaseInput, ''); 
    else 
     $base10 = $numberInput; 
    if ($base10<strlen($toBaseInput)) 
     return $toBase[$base10]; 
    while($base10 != '0') 
    { 
     $retval = $toBase[bcmod($base10,$toLen)].$retval; 
     $base10 = bcdiv($base10,$toLen,0); 
    } 
    return $retval; 
} 
?> 
+0

私はあなたの疑問を誤解しているかもしれません... –

+0

しかし、あなたは問題を理解し、解決策を私に提供しました。 +1 – liamzebedee

関連する問題