У меня есть таблица SQL, в которой используются строки для ключа. Мне нужно преобразовать эту строку (максимум 18 символов) в уникальное (!) 4-байтовое целое с помощью PHP. Может ли кто-нибудь помочь?Создайте уникальное 4-байтовое целое число из строки в PHP
ответ
Храните таблицу поиска целых чисел. Каждый раз, когда вы сталкиваетесь с новой строкой, вы добавляете ее в таблицу сопоставления и присваиваете ей новый уникальный идентификатор. Это будет работать примерно на 2^32 строки, что, вероятно, достаточно.
Невозможно сделать это более чем для 2^32 различных строк.
Не уникально, в конечном итоге произойдет столкновение. ОП запрашивает уникальное отображение. – Piskvor
Это _is_ уникально. Для до 2^32 клавиш. Как я и сказал. Это практический ответ на теоретически неразрешимую проблему. Верно. – usr
Хорошо, но разве вы не заново изобрели ключ автоинкремента SQL? – Piskvor
Вы не можете. Четырехбайтовое целое число может представлять 2^32 = 4 миллиарда значений, чего недостаточно для хранения вашего целевого пространства.
Если у вас в таблице меньше 4 миллиардов строк, вы можете создать перекрестную таблицу, которая просто присваивает каждому из них инкрементное значение. Этот подход будет ограничен 4 миллиардами строк, но это может быть хорошо для вашей ситуации.
Уникальный? Невозможно, извините.
Давайте поближе:
С 18 символов, даже если мы предполагая только 128 возможных символов ASCII (7 бит), вы получите 128^18 возможных строк (и я не даже вдаваясь в возможность более коротких строк!), что составляет около 8E37 (8 и 37 нулей).
С 4-байтовым целым вы получаете 256^4 возможных целых чисел, что составляет около 4E9 (4 миллиарда).
Итак, у вас есть около 4E28 строк, чем у вас есть целые числа; вы не можете иметь уникальное отображение.
Таким образом, вы обязательно столкнетесь с столкновением, как только вы введете ключ 4294967297th, но вы можете столкнуться с ним, как только вы введете более одного.
Смотрите также: http://en.wikipedia.org/wiki/Pigeonhole_principle
- 1. Создайте уникальное целое число для каждой строки?
- 2. Создайте уникальное целое число из буквенно-цифровой строки
- 3. Как сгенерировать уникальное целое число из строки?
- 4. Создайте уникальное целое число на основе заданной строки
- 5. Уникальное целое число в массиве
- 6. SQLAlchemy: random Уникальное целое число?
- 7. Создайте наименьшее уникальное число из двух байтов
- 8. Извлечь целое число из строки
- 9. Как создать уникальное целое из строки в java?
- 10. Определить уникальное целое число для каждого узла
- 11. PHP получить целое число от строки
- 12. из строки в целое число (скриптов)
- 13. Получить целое число из строки в c
- 14. Получить целое число из строки в Python3
- 15. Преобразование вектора из строки в целое число
- 16. преобразование из строки в целое число vb.net
- 17. Преобразование строки в целое число (число)
- 18. Преобразование строки в целое число?
- 19. Изменение строки в целое число
- 20. Как создать случайное и уникальное целое число в поле sql?
- 21. Создайте длинное случайное целое число в Java
- 22. Преобразование строки в целое число
- 23. Преобразование строки в целое число
- 24. Преобразование строки в целое число?
- 25. преобразование строки в целое число
- 26. Преобразование строки в целое число
- 27. Преобразование строки в целое число
- 28. Превращение строки в целое число?
- 29. Умножить целое число Stdin с аргументом командной строки (целое число)
- 30. Получить целое число из числовой строки
Как бы вы поместить 18-байтовое строку в 4-байтовое целое число? –
Нет. Недостаточно 4-байтовых целых чисел для покрытия всех возможных строк. –
18 символов строка имеет 18 байт. Вы сказали «_max._ 18 символов», таким образом, есть намного больше комбинаций, а затем 18 байт. Теперь вы хотите сжать 18 байтов в 4 байта. Это может работать некоторое время, но не долго. – KingCrunch