小编use*_*431的帖子

如何将一个非常大的数字压缩成字母数字(在PHP中)?

我想将一个非常大的数字压缩成字母数字[0-9a-zA-Z].当然,最简单的方法是使用一个名为'base64_encode()'的内置php函数,但我完全贬低了这个方法,它会产生额外的字符,如'/'和'='.更重要的是,base64_encode无法压缩数字,因为此函数将数字视为字符串.

我曾想过另一个名为'base_convert()'的in-bulid函数,但它只能将数字转换为charset [0-9a-z],从而使结果更长.

我现在用一种廉价的方式来实现我的目标:

function compress_int($num) {
    $chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';

    $result = '';

    while( $num ) {
        $mod = $num % 52;
        $num = intval($num / 52);

        $result .= $chars[$mod];
    }

    return $result;
}
Run Code Online (Sandbox Code Playgroud)

但是,我认为效率很低.所以我非常感谢能够以更高的效率告诉我更好的方法.^ _ ^

php

1
推荐指数
2
解决办法
1472
查看次数

标签 统计

php ×1