是否可以将数字转换为字母数字代码,如下所示:
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
等
我试图将大数字转换为较小长度的字母数字字符串。
答案 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..789
,base_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
答案 3 :(得分:0)
base64_encode();
和解码使用
base64_decode();
答案 4 :(得分:0)
dechex()和base_convert()都会因大数而失败。它们受到转换期间内部使用的int和float类型的最大大小和精度的限制。
http://php.net/manual/pt_BR/function.base-convert.php讨论有一些很好的辅助函数(参见2,3),可以通过使用BC函数来计算数学,从而避免这个问题。 BC扩展可以处理任意大数。