This commit is contained in:
sc0Vu 2017-12-28 14:52:13 +08:00
parent ab90423aab
commit 10a9a66987
2 changed files with 47 additions and 0 deletions

View File

@ -397,4 +397,30 @@ class Utils
} }
return $json; return $json;
} }
/**
* toBn
* Change number or number string to bignumber.
*
* @param BigNumber|string|int $number
* @return \phpseclib\Math\BigInteger
*/
public static function toBn($number)
{
if (is_int($number)) {
$bn = new BigNumber($number);
} elseif (is_string($number)) {
$number = mb_strtolower($number);
if (self::isZeroPrefixed($number)) {
$number = self::stripZero($number);
$bn = new BigNumber($number, 16);
} else {
$bn = new BigNumber($number);
}
} elseif (!$number instanceof BigNumber){
throw new InvalidArgumentException('toBn number must be BigNumber, string or int.');
}
return $bn;
}
} }

View File

@ -4,6 +4,7 @@ namespace Test\Unit;
use InvalidArgumentException; use InvalidArgumentException;
use Test\TestCase; use Test\TestCase;
use phpseclib\Math\BigInteger;
use Web3\Utils; use Web3\Utils;
class UtilsTest extends TestCase class UtilsTest extends TestCase
@ -386,4 +387,24 @@ class UtilsTest extends TestCase
$this->assertFalse($isHex); $this->assertFalse($isHex);
} }
/**
* testToBn
*
* @return void
*/
public function testToBn()
{
$bn = Utils::toBn(11);
$this->assertEquals($bn->toString(), '11');
$bn = Utils::toBn('0x12');
$this->assertEquals($bn->toString(), '18');
$bn = Utils::toBn(0x12);
$this->assertEquals($bn->toString(), '18');
}
} }