WIN-2308041133\Administrator 6 months ago
parent
commit
3e08027a66
1 changed files with 47 additions and 5 deletions
  1. 47 5
      application/api/controller/Pay.php

+ 47 - 5
application/api/controller/Pay.php

@@ -1031,11 +1031,14 @@ class Pay extends Api
     }
     public function test()
     {
-        $site = config('site');
-        var_dump($site['gxz']['普通会员']);
-        var_dump($site['gxz']['初级合伙人']);
-        var_dump($site['gxz']['高级合伙人']);
-        var_dump($site['gxz']['董事']);
+        $base58_addr = "TFRpdAs4SP1uoWcq8Kkx4769QQnJJGyPUX";
+        $hex =self::base58ToHex($base58_addr);
+        var_dump($hex);
+//        $site = config('site');
+//        var_dump($site['gxz']['普通会员']);
+//        var_dump($site['gxz']['初级合伙人']);
+//        var_dump($site['gxz']['高级合伙人']);
+//        var_dump($site['gxz']['董事']);
         die();
 
         $service = Web3Service::instance('bsc', 'usdt', '');
@@ -1113,5 +1116,44 @@ class Pay extends Api
 //        }
 //        var_dump($info);die();
     }
+    function base58ToHex($base58) {
+        // TRON 专用 Base58 字符集
+        $alphabet = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
+
+        // 1. 将 Base58 转换为十进制大数
+        $num = '0';
+        for ($i = 0; $i < strlen($base58); $i++) {
+            $char = $base58[$i];
+            $pos = strpos($alphabet, $char);
+            if ($pos === false) {
+                throw new Exception("无效的 Base58 字符: $char");
+            }
+            $num = bcmul($num, '58');
+            $num = bcadd($num, (string)$pos);
+        }
+
+        // 2. 将十进制大数转换为十六进制
+        $hex = '';
+        while ($num !== '0') {
+            $remainder = bcmod($num, '16');
+            $hex = dechex((int)$remainder) . $hex;
+            $num = bcdiv($num, '16', 0);
+        }
 
+        // 3. 添加前导零(每个前导'1'对应一个00)
+        $leadingZeros = '';
+        for ($i = 0; $i < strlen($base58) && $base58[$i] === '1'; $i++) {
+            $leadingZeros .= '00';
+        }
+
+        // 4. 组合并确保长度为50字符(25字节)
+        $hex = $leadingZeros . $hex;
+        $hex = str_pad($hex, 50, '0', STR_PAD_LEFT);
+
+        // 5. 提取地址部分并添加 TRON 前缀
+        // 跳过版本字节(0x41)和校验码(最后4字节)
+        $addressPart = substr($hex, 2, 40); // 取20字节地址
+
+        return '0x41' . $addressPart; // TRON 地址以0x41开头
+    }
 }