将数字转换为字母和数字代码

时间:2016-02-18 13:04:37

标签: php

是否可以将数字转换为字母数字代码,如下所示:

a
b
c
d
..
z
1
2
3
4
..
aa
ab
ac
ad
..
az
a1
a2
a3
a4
..
aaa
aab
aac
aad
..
aaz
aa1
aa2

我试图将大数字转换为较小长度的字母数字字符串。

5 个答案:

答案 0 :(得分:6)

不知道你为什么要特意这样做,但是尝试将基数从10改为32;

 base_convert($number, 10, 32);

然后转换回来

 base_convert($number, 32, 10);

正如其他人所指出的那样 - 对于非常大的数字,这可能行不通。

如果您需要能够处理非常大的数字,请查看以下链接:

How to generate random 64-bit value as decimal string in PHP

答案 1 :(得分:2)

您可以使用base_convert()将您的号码基数从10(十进制)更改为36(26个拉丁字母加10个阿拉伯数字)。

结果将与您给出的示例列表不同。您使用了数字abc..xyz012..789base_convert将使用不同的订单012..789abc..xyz

// convert decimal to base36
echo base_convert($number_dec, 10 , 36);

// convert base36 to decimal
echo base_convert($number_b36, 36 , 10);

翻译

dec     base36
0       0
1       1
...
9       9
10      a
11      b
...
34      y
35      z
36      10
37      11
..
45      19
46      1a
...
1295    zz
1296    100
1297    101

答案 2 :(得分:0)

您可以使用+%s将数字转换为十六进制

http://php.net/manual/en/function.dechex.php

例如:

#!/bin/bash
start=$(date +%s)
sleep 10
end=$(date +%s)

echo The command took $(( end - start )) seconds.

要转换回来,只需使用dechex

http://php.net/manual/en/function.hexdec.php

答案 3 :(得分:0)

base64_encode();

和解码使用

base64_decode();

答案 4 :(得分:0)

dechex()和base_convert()都会因大数而失败。它们受到转换期间内部使用的int和float类型的最大大小和精度的限制。

http://php.net/manual/pt_BR/function.base-convert.php讨论有一些很好的辅助函数(参见23),可以通过使用BC函数来计算数学,从而避免这个问题。 BC扩展可以处理任意大数。