Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.07.2011, 11:41   #1
Lindemann66
Форумчанин
 
Регистрация: 28.02.2011
Сообщений: 127
Лампочка Нужно получить Int64-ый хэш по тексту

Всем привет

Необходимо получить 64-битный хэш-код, вычисленный от определённого текста (размер текста большой)

Какие библиотеки могут решить такую задачу?

Я знаю, что в boost и qt есть функции для вычисления хэша, но никак не могу найти нормальные примеры того, как они работают для 64 битного возвращаемого числа

Буду очень признателен, если кто-то подскажет решение
Lindemann66 вне форума Ответить с цитированием
Старый 21.07.2011, 19:06   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Хеш-функция кто? Или вам все равно?..
p51x вне форума Ответить с цитированием
Старый 22.07.2011, 11:28   #3
sashonk
Форумчанин
 
Регистрация: 26.10.2009
Сообщений: 170
По умолчанию

вот вам пример с того же boost.org (немного переделанный)
Код:
#include <boost/crc.hpp>      // for boost::crc_basic, boost::crc_optimal
#include <boost/cstdint.hpp>  // for boost::uint16_t

#include <algorithm>  // for std::for_each
#include <cassert>    // for assert
#include <cstddef>    // for std::size_t
#include <iostream>   // for std::cout
#include <ostream>    // for std::endl


// Main function
int
main ()
{
    // This is "123456789" in ASCII
    unsigned char const  data[] = { 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
     0x38, 0x39 };
    std::size_t const    data_len = sizeof( data ) / sizeof( data[0] );

    // The expected CRC for the given data
    boost::uint64_t const  expected = 0x29B1;

    // Simulate CRC-CCITT
    boost::crc_basic<64>  crc_ccitt1( 0x1021, 0xFFFF, 0, false, false );
    crc_ccitt1.process_bytes( data, data_len );
    assert( crc_ccitt1.checksum() == expected );

    // Repeat with the optimal version (assuming a 16-bit type exists)
    boost::crc_optimal<64, 0x1021, 0xFFFF, 0, false, false>  crc_ccitt2;
    crc_ccitt2 = std::for_each( data, data + data_len, crc_ccitt2 );
    assert( crc_ccitt2() == expected );

    std::cout << "All tests passed." << std::endl;
    return 0;
}
не пойдет?
sashonk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
хэш-функция N-хэш Temka Общие вопросы Delphi 1 29.11.2010 21:11
тип int64 в Делфи Rusl92 Помощь студентам 2 21.11.2009 20:50
Delphi. Int64. Непонятный формат времени. bogoga Общие вопросы Delphi 9 27.08.2009 17:10
как получить доступ к тексту внутри JS на загруженной странице element Работа с сетью в Delphi 0 11.01.2008 23:19
Delphi и int64 Onix84 Общие вопросы Delphi 1 18.11.2007 23:28