Форум программистов, компьютерный форум, киберфорум
Boost C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
2 / 1 / 1
Регистрация: 22.11.2022
Сообщений: 109
1

Boost crc32 реализация

17.08.2023, 18:40. Показов 2232. Ответов 2

Author24 — интернет-сервис помощи студентам
Здравствуйте друзья. Подскажите пожалуйста, чем может быть вызван разный расчет контрольных сумм трех файлов с одинаковым содержимым, но разными названиями?
Пример брал здесь: https://www.boost.org/doc/libs... xample.cpp
Видимо что то не правильно понимаю.

Три файла с одним содержимым:
Название: Hello.png
Просмотров: 69

Размер: 3.3 Кб
Boost crc32 реализация


Вроде не хитрый код!?:
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
#include <iostream>
#include <fstream>
#include <boost/crc.hpp>
 
#ifndef PRIVATE_BUFFER_SIZE
#define PRIVATE_BUFFER_SIZE 1024
#endif
 
std::streamsize const buffer_size = PRIVATE_BUFFER_SIZE;
 
int main(int argc, char *argv[])
{
    boost::crc_32_type result;
    std::string fileName[3]{"hello.txt", "hello1.txt", "hello2.txt"};
    for (int i = 0; i < 3; i++)
    {
        std::ifstream ifs(fileName[i], std::ios_base::binary);
        if (ifs)
        {
            do
            {
                char buffer[buffer_size];
 
                ifs.read(buffer, buffer_size);
                result.process_bytes(buffer, ifs.gcount());
            } while (ifs);
        }
        else
        {
            std::cerr << "Failed to open file " << std::endl;
        }
        std::cout << std::hex << result.checksum() << std::endl;
    }
    return 0;
}
А результат разный:

Название: Hello2.png
Просмотров: 66

Размер: 3.7 Кб


Подскажите пожалуйста, что не правильно делаю?

Спасибо.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.08.2023, 18:40
Ответы с готовыми решениями:

Boost:: реализация try_lock файла во время сериализации
1. Как правильно сделать проверку на &quot;занятость&quot; файла? *try_lock*? 2. Проверить можно, создав 2...

Реализация CRC32
Здраствуйте, помогите реализовать контрольцелостности dll библиотеки, с помощью CRC32. Писал...

CRC32/BZIP2 Реализация
Здравствуйте, давно не занимался программированием, появилась необходимость реализации алгоритма...

CRC32, программная реализация
Привет! У кого нибудь есть пример программной реализации расчета crc32 по том же алгоритму, по...

2
Эксперт .NET
10571 / 6495 / 1506
Регистрация: 25.05.2015
Сообщений: 19,673
Записей в блоге: 14
17.08.2023, 21:19 2
Лучший ответ Сообщение было отмечено Bodden как решение

Решение

Вы не очищаете состояние хешера между перезапусками.

91d8... это crc-32 для строки "Привет Друг" в UTF-8.
e7bb... - для "Привет ДругПривет Друг"
3756... - для "Привет ДругПривет ДругПривет Друг"
1
2 / 1 / 1
Регистрация: 22.11.2022
Сообщений: 109
18.08.2023, 06:36  [ТС] 3
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
#include <iostream>
#include <fstream>
#include <boost/crc.hpp>
 
#ifndef PRIVATE_BUFFER_SIZE
#define PRIVATE_BUFFER_SIZE 1024
#endif
 
std::streamsize const buffer_size = PRIVATE_BUFFER_SIZE;
 
int main(int argc, char *argv[])
{
 
    std::string fileName[3]{"hello.txt", "hello1.txt", "COM.txt"};
    for (int i = 0; i < 3; i++)
    {
        boost::crc_32_type result;
        std::ifstream ifs(fileName[i], std::ios_base::binary);
        if (ifs)
        {
            do
            {
                char buffer[buffer_size];
 
                ifs.read(buffer, buffer_size);
                result.process_bytes(buffer, ifs.gcount());
            } while (ifs);
        }
        else
        {
            std::cerr << "Failed to open file " << std::endl;
        }
        std::cout << std::hex << result.checksum() << std::endl;
    }
    return 0;
}
0
18.08.2023, 06:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.08.2023, 06:36
Помогаю со студенческими работами здесь

Реализация Turbo Boost
Никогда не использовал разгон процессора, так что опыта никакого в этом отношении нет. А сейчас...

Реализация LRU кэша при помощи boost::multi_index
Пытаюсь реализовать класс для кэширования строк. при попытке добавления нового элемента если кол-во...

Boost начало работы: Undefined reference to `boost::system::generic_category() '
Добрый день Собственно говоря возникла необходимость использовать boost в работе. Поставил так: ...

HTTPS запрос к Telegram API с Boost Beast & Boost Asio (Не работает)
#include &quot;root_certificates.hpp&quot; #include &lt;boost/beast/core.hpp&gt; #include...

Boost Log - undefined reference to `boost::system::system_category()'
Пытаюсь скомпилировать код из примеров Boost Log:#include &lt;boost/log/trivial.hpp&gt; int main(int,...

Использование boost и boost.build с несколькими компиляторами
Здравствуйте! Собрал библиотеку boost и boost.build для двух компиляторов: MinGW 4.5.2 и Visual...

Метапрограммирование в boost::proto (boost::spirit)
В библиотеке boost:: proto есть такой код calculator&lt;proto::terminal&lt;placeholder&lt;0&gt; &gt;::type&gt;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru