Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

hash строк - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Просмотр текущей папки http://www.cyberforum.ru/cpp/thread86353.html
Доброго времени суток! Подскажите пожалуйста, как относительно несложно просмотреть текущую папку на наличие файлов определенного расширения. Поиск по маске проще говоря )) пытался запускать прогу...
C++ Как осуществить Обработку бинарного файла? Файл содержит произвольные данные. Определить, встречается ли в файле определенная последовательность байт (заданных виде массива символов). Если встречается, то вывести на экран все смещения, где... http://www.cyberforum.ru/cpp/thread86151.html
C++ Алгоритм Эрли
Народ, спасите мне жизнь!!!! С лабораторки нужно написать программу "Алгоритм Эрли", а моих знаний об етом алгоритме оочень мало!!! Подскажите пожалуста что он должен делатьи мб какие-то исходняки...
C++ Строка
Как в строке заключить слова начинающиеся с согласной буквы в двойные кавычки?
C++ Загрузка текстового файла в TreeView http://www.cyberforum.ru/cpp/thread85891.html
Здравствуйте! При написании программы возникла такая проблема: 1) Программно создается файл .txt 2) Хочу загрзить строки файла в компонент TreeView в GodeGear 2009 С++ Builder 3) Делаю загрузку...
C++ Linked List na C kak perevernut na C LinkedList esli mo0jno kod pojaluista. подробнее

Показать сообщение отдельно
insideone
Модератор
Автор FAQ
3642 / 921 / 49
Регистрация: 10.01.2010
Сообщений: 2,473
16.01.2010, 18:31  [ТС]
Скорее всего строк будет много. С другой стороны если их много вероятность коллизии ключа строки возрастает... просто мне хочется предпочесть скорость последующего обращения к строкам, пожертвовав небольшим количеством памяти. Если использовать поиск скорость обращения упадет. Хм, даже не знаю... не думаю что на много.
В общем я щас попробовал CRC вроде разные числа выдает
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    unsigned short _hash(char* hashed){
        unsigned short crc = 0xFFFF;
        unsigned char i;
        unsigned char len = strlen(hashed);
     
        while( len-- )
        {
            crc ^= *hashed++ << 8;
     
            for( i = 0; i < 8; i++ )
            crc = crc & 0x8000 ? ( crc << 1 ) ^ 0x1021 : crc << 1;
        }
        return crc;
    }
А нельзя просто посчитать сумму байтов, из которых состоит строка и сделать её по модулю x
Мне кажется тогда для строк "АБ" и "БА" будут выдаваться одинаковые значения, хм...
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru