IntegerFormatter.php 1004 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. <?php
  2. /**
  3. * This file is part of web3.php package.
  4. *
  5. * (c) Kuan-Cheng,Lai <alk03073135@gmail.com>
  6. *
  7. * @author Peter Lai <alk03073135@gmail.com>
  8. * @license MIT
  9. */
  10. namespace blockchain\web3\src\Formatters;
  11. use InvalidArgumentException;
  12. use blockchain\web3\src\Utils;
  13. use blockchain\web3\src\Formatters\IFormatter;
  14. class IntegerFormatter implements IFormatter
  15. {
  16. /**
  17. * format
  18. *
  19. * @param mixed $value
  20. * @return string
  21. */
  22. public static function format($value)
  23. {
  24. $value = (string) $value;
  25. $arguments = func_get_args();
  26. $digit = 64;
  27. if (isset($arguments[1]) && is_numeric($arguments[1])) {
  28. $digit = intval($arguments[1]);
  29. }
  30. $bn = Utils::toBn($value);
  31. $bnHex = $bn->toHex(true);
  32. $padded = mb_substr($bnHex, 0, 1);
  33. if ($padded !== 'f') {
  34. $padded = '0';
  35. }
  36. return implode('', array_fill(0, $digit-mb_strlen($bnHex), $padded)) . $bnHex;
  37. }
  38. }