PHP: очень простая строка кодирования / декодирования - PullRequest
2 голосов
/ 30 июня 2010

Есть ли какая-нибудь функция PHP, которая кодирует строку в значение типа int, которое позже я могу декодировать обратно в строку без ключа?

Ответы [ 6 ]

5 голосов
/ 30 июня 2010

Конечно, вы можете конвертировать строки в числа и наоборот.Подумайте:

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

Вы также можете выполнить приведение типов с settype () .

Если я вас неправильно понял, и вы хотите закодировать произвольностроки, рассмотрите использование base64_encode () и bas64_decode () .Если вы хотите преобразовать строковое представление base 64 в целое число base 10, просто используйте base_convert () .

2 голосов
/ 30 июня 2010

И int имеет 4 или 8 байтов в зависимости от платформы, и каждый символ в строке составляет один байт (или больше в зависимости от кодировки). Таким образом, вы можете кодировать только очень маленькие строки в целые числа, что в основном дает ответ на ваш вопрос: нет.

Чего ты хочешь достичь?

1 голос
/ 07 ноября 2013

Для PHP нет функции, но я недавно написал класс для шифрования и дешифрования строки в PHP. Вы можете посмотреть на это: https://github.com/Lars-/PHP-Security-class

1 голос
/ 01 апреля 2012

введите порядковый номер отдельных букв и отобразите его в виде шестнадцатеричного числа из двух цифр.Затем вы можете преобразовать эти шестнадцатеричные числа обратно в порядковые значения отдельных символов.Не знаю, какие символы вы собираетесь кодировать, возможно, вам придется использовать 4 символа в каждой букве (например, String Peter станет 00700065007400650072).

1 голос
/ 30 июня 2010

Я убежден, что то, что вы думаете, что вы хотите сделать, на самом деле не то, что вы хотите делать. :-) это звучит как глупая идея. Как уже спрашивал другой пользователь :) зачем тебе это? Каковы ваши намерения?

Ну, теперь, когда вы упомянули, что числа и буква a-z являются приемлемыми, у меня есть одно предложение: вы можете перебрать порядковый номер отдельных букв и отобразить его в виде шестнадцатеричного числа из двух цифр. Затем вы можете преобразовать эти шестнадцатеричные числа обратно в порядковые значения отдельных символов. Не знаю, какие символы вы собираетесь кодировать, возможно, вам нужно будет использовать 4 символа в каждой букве (например, строка Peter станет 00700065007400650072) Что ж ... получайте удовольствие, я все еще не очень см. обоснование того, что вы делаете.

1 голос
/ 30 июня 2010

Я подозреваю, что нет, поскольку в MAX_INT существует гораздо больше возможных комбинаций строк, чем целых чисел.

Должно ли это быть целое число?

...