LINUX.ORG.RU

Perl - преобразовать строку в int32


0

0

Есть некоторая строка. Как лучше преобразовать строку в int32 что-бы использовать этот int32 для сортировки исходных строк? Можно конечно тупо взять первые 4 символа строки и сделать из них int32, но мне кажеться, это не оптимальный вариант.

String::CRC32 успешно преобразует строку в 32-битное целое. Сортировать по _этому_, конечно, нельзя (т.е. можно, но порядок будет, грубо говоря, случайный).

Создать 32-битную хеш-функцию, сортировка по которой хотя бы приблизительно правильная, с учетом collation order, практически невозможно.

anonymous
()
Ответ на: комментарий от Pi

1. Эта штука нужна для сортировки. Т.е. строки типа "a", "b", "z" должны преобразовываться в числа с соответствующим отношением величины.

2. Посимвольное сравнение не устраивает тем, что сравнение будет делать внешняя прога, которая умеет сравнивать только int32.

UncleAndy ★★★
() автор топика
Ответ на: комментарий от UncleAndy

Если на момент перевода string->int32 тебе известен весь диапазон возможных строк, то такая функция пишется довольно просто. В противном случае, наверное, придется что-то изобретать.

Bob1
()
Ответ на: комментарий от Pi

> чтоб потом по хешу сравнивать? :)

Просто он не уточнил какого вида сортировка ему нужна. Для лексикографической сортировки это работать не будет. понятное дело.

Bob1
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.