2

是否有任何 PHP 函数将字符串编码为 int 值,稍后我可以将其解码回没有任何键的字符串?

4

6 回答 6

5

当然,您可以将字符串转换为数字,反之亦然。考虑:

$a = "" + 1
gettype($a) // integer
$b = "$a"
gettype($b) // string

您还可以使用settype()进行类型转换

如果我误解了您并且您想对任意字符串进行编码,请考虑使用base64_encode()bas64_decode()。如果要将基数为 64 的字符串表示形式转换为基数为 10 的整数,只需使用base_convert()即可。

于 2010-06-30T13:15:50.240 回答
2

并且 int 有 4 或 8 个字节,具体取决于平台,字符串中的每个字符都是一个字节(或更多,取决于编码)。因此,您只能将非常小的字符串编码为整数,这基本上可以回答您的问题:不。

你想要完成什么?

于 2010-06-30T00:03:19.787 回答
1

我怀疑不会,因为 MAX_INT 中可能的字符串组合比整数多得多。

它必须是整数吗?

于 2010-06-30T00:04:12.403 回答
1

我相信你认为你想做的并不是你真正想做的。:-) 这听起来像是一个愚蠢的想法。正如另一个用户之前问过的那样:)你需要这个做什么?你的意图是什么?

好吧,既然您提到数字和 az 字母是可以接受的,那么我有一个建议,您可以遍历各个字母的序数值并将其显示为两位十六进制。然后,您可以将这些十六进制数转换回各个字符的序数值。不知道你要编码什么样的字符,可能你需要每个字母使用 4 个字符(例如 StringPeter会变成 00700065007400650072 )好吧......玩得开心,我仍然没有真正看到理由做你正在做的事。

于 2010-06-30T00:12:24.740 回答
1

遍历各个字母的序数值并将其显示为两位十六进制。然后,您可以将这些十六进制数转换回各个字符的序数值。不知道你要编码什么样的字符,可能你需要每个字母使用 4 个字符(例如 String Peter 会变成 00700065007400650072 )好吧......玩得开心,我仍然没有真正看到

于 2012-04-01T14:18:31.943 回答
1

PHP 没有函数,但我最近写了一个类来加密和解密 PHP 中的字符串。你可以看一下:https ://github.com/Lars-/PHP-Security-class

于 2013-11-07T10:07:13.153 回答