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

hash строк - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Просмотр текущей папки http://www.cyberforum.ru/cpp/thread86353.html
Доброго времени суток! Подскажите пожалуйста, как относительно несложно просмотреть текущую папку на наличие файлов определенного расширения. Поиск по маске проще говоря )) пытался запускать прогу отсюда, но она что-то у меня не компилится (ошибка "unresolved external symbol") читал, что не обязательно использовать функции FindFirst, FindNext, а можно самому как-то написать. Но куда копать не...
C++ Как осуществить Обработку бинарного файла? Файл содержит произвольные данные. Определить, встречается ли в файле определенная последовательность байт (заданных виде массива символов). Если встречается, то вывести на экран все смещения, где эта последовательность встречается. http://www.cyberforum.ru/cpp/thread86151.html
C++ Алгоритм Эрли
Народ, спасите мне жизнь!!!! С лабораторки нужно написать программу "Алгоритм Эрли", а моих знаний об етом алгоритме оочень мало!!! Подскажите пожалуста что он должен делатьи мб какие-то исходняки программы подкиньте.. очень прошу::help:help::help:
C++ Строка
Как в строке заключить слова начинающиеся с согласной буквы в двойные кавычки?
C++ Загрузка текстового файла в TreeView http://www.cyberforum.ru/cpp/thread85891.html
Здравствуйте! При написании программы возникла такая проблема: 1) Программно создается файл .txt 2) Хочу загрзить строки файла в компонент TreeView в GodeGear 2009 С++ Builder 3) Делаю загрузку TreeView1-> LoadFromFile(...); 4) Если до этого в файл ".txt" были внесены какие-то данные, то в TreeView строки отображаются; если же строки добавляю в TreeView программно и сохраняю TreeView:...
C++ Логарифм Дан код описание натурального логарифма ln()(разложение ряда), Кто может поправить код на С++, и описать Log2(a)=lna/ln2 Мучаюсь уже три месяца.Если кто знает еще описание куб. корня,прошу помочь private double MLn(double x0){ double x=x0; double y=0; //Получаем показатель степени String s0=""+x; int i=s0.indexOf("E"); подробнее

Показать сообщение отдельно
insideone
Модератор
Автор FAQ
 Аватар для insideone
3634 / 912 / 48
Регистрация: 10.01.2010
Сообщений: 2,457
17.01.2010, 00:11  [ТС]     hash строк
Ссылка работала и работает) Впрочем неважно
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include "pstdint.h" /* Replace with <stdint.h> if appropriate */
#undef get16bits
#if (defined(__GNUC__) && defined(__i386__)) || defined(__WATCOMC__) \
  || defined(_MSC_VER) || defined (__BORLANDC__) || defined (__TURBOC__)
#define get16bits(d) (*((const uint16_t *) (d)))
#endif
 
#if !defined (get16bits)
#define get16bits(d) ((((uint32_t)(((const uint8_t *)(d))[1])) << 8)\
                       +(uint32_t)(((const uint8_t *)(d))[0]) )
#endif
 
uint32_t SuperFastHash (const char * data, int len) {
uint32_t hash = len, tmp;
int rem;
 
    if (len <= 0 || data == NULL) return 0;
 
    rem = len & 3;
    len >>= 2;
 
    /* Main loop */
    for (;len > 0; len--) {
        hash  += get16bits (data);
        tmp    = (get16bits (data+2) << 11) ^ hash;
        hash   = (hash << 16) ^ tmp;
        data  += 2*sizeof (uint16_t);
        hash  += hash >> 11;
    }
 
    /* Handle end cases */
    switch (rem) {
        case 3: hash += get16bits (data);
                hash ^= hash << 16;
                hash ^= data[sizeof (uint16_t)] << 18;
                hash += hash >> 11;
                break;
        case 2: hash += get16bits (data);
                hash ^= hash << 11;
                hash += hash >> 17;
                break;
        case 1: hash += *data;
                hash ^= hash << 10;
                hash += hash >> 1;
    }
 
    /* Force "avalanching" of final 127 bits */
    hash ^= hash << 3;
    hash += hash >> 5;
    hash ^= hash << 4;
    hash += hash >> 17;
    hash ^= hash << 25;
    hash += hash >> 6;
 
    return hash;
}
Просто там типа тесты и показано что относительно CRC32 оно работает в 3-4 раза быстрее, и относительно других тоже... и ваще типа самая быстрая)
А если указать тип результата то наверное просто лишние биты обрежутся? мне нужно сжать большее число в меньшее число... хм
 
Текущее время: 01:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru