Base64Helper.php 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <?php
  2. namespace common\helpers;
  3. use Yii;
  4. /**
  5. * 十进制转64进制
  6. * @package common\helpers
  7. * @author qimall
  8. */
  9. class Base64Helper
  10. {
  11. private static $alphabet = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/';
  12. /**
  13. * 十进制转64进制
  14. * @Author bing
  15. * @DateTime 2021-11-29 16:06:52
  16. * @copyright: Copyright (c) 2020 广东七件事集团
  17. * @param [type] $dec_num
  18. * @return void
  19. */
  20. public static function dec2Base64($dec_num)
  21. {
  22. $base64_num = '';
  23. $base = strlen(self::$alphabet);
  24. if($dec_num == 0) $base64_num = self::$alphabet[0];
  25. while($dec_num > 0){
  26. $remainder = $dec_num % $base;
  27. $dec_num = ($dec_num-$remainder) / $base;
  28. if($remainder == 0){
  29. $base64_num = self::$alphabet[0] . $base64_num;
  30. }else{
  31. $base64_num = self::$alphabet[$remainder] . $base64_num;
  32. }
  33. }
  34. return $base64_num;
  35. }
  36. /**
  37. * 64进制转十进制
  38. * @Author bing
  39. * @DateTime 2021-11-29 16:06:52
  40. * @copyright: Copyright (c) 2020 广东七件事集团
  41. * @param [type] $dec_num
  42. * @return void
  43. */
  44. public static function Base642dec($base64_num){
  45. $digit = strlen($base64_num);
  46. $base = strlen(self::$alphabet);
  47. $dec_num = 0;
  48. for($i = 0; $i < $digit; $i++){
  49. //每一位分别读取
  50. $mult = 1;
  51. for($j = $digit - 1; $j > $i; $j--){
  52. //构造当前位需要乘的数
  53. if($i == ($digit - 1)){
  54. $mult = 1;
  55. }else{
  56. $mult = $mult * $base;
  57. }
  58. }
  59. //计算当前位数代表的十进制数,然后累加
  60. $dec_num += strpos(self::$alphabet, $base64_num[$i]) * $mult;
  61. }
  62. return $dec_num;
  63. }
  64. }