![]() |
1
4
有趣的是,我问 the exact opposite question 昨天。
首先想到的是将十进制数转换为
hexadecimal
. 5000个会变成
您还可以使用更高的基数,它使用完整的字母表(0-Z而不是0-F),甚至可以使用完整的256个ASCII字符。正如@yacoby指出的,您可以使用
正如我在评论中所说,请记住,这不是一种有效的隐藏ID的方法。如果你有安全问题的时候,人们可以猜测下一个或上一个ID到一个记录,这是非常糟糕的保护。 |
![]() |
2
7
你想把数字的底数改成10以外的数字(我想你想要36为底数,因为它使用了整个字母表和数字0-9)。 内置的 base_convert 函数可能有帮助,尽管它有限制,但它只能在2和36之间转换。
|
![]() |
3
1
dechex 将数字转换为十六进制。但是,它不会混淆给定系统中有多少记录。我认为它也不会使储存或节省空间变得更有效率。 如果需要混淆,可能需要使用双向密码函数。这也不会节省空间。 请更清楚地陈述你的目标,并提供更多的背景,因为这似乎有点毫无意义。 |
![]() |
4
0
这可能会使更多的人困惑,而不是简单地转换数字的基数… 尝试使用带符号的数字来表示您的数字。例如,不使用数字0..9表示十进制数,而是使用数字-5..5。这个 Wikipedia article 给出了一个数字的二进制表示的例子,但是这种方法可以用于任何数字基。 结合使用这一点,比如说,base-36算法可能会让您满意。 |
![]() |
5
-1
编辑 :此答案实际上不是问题的解决方案,因此请忽略它,除非您试图散列一个数字。 我的第一个想法是用eg散列它。 md5 或 sha1 . (你可能不会节省任何空间…) 防止人们使用 rainbow-tables 或 brute force 要猜测您散列的数字,可以始终添加 salt . 它可以像一个字符串一样简单,在对数字进行哈希运算之前先在数字前面加上一个字符串。 MD5将返回一个正好32个字符的字母数字字符串,而sha1将返回一个精确的40个字符。 |