Форум программистов, компьютерный форум, киберфорум
С++ под Linux
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
1 / 1 / 0
Регистрация: 19.12.2011
Сообщений: 95
1

Рекурсивный алгоритм crc32

02.09.2019, 07:38. Показов 1888. Ответов 12
Метки нет (Все метки)

Доброе утро!
Может кто-нибудь поделиться алгоритмом для подсчёта контрольной суммы директории и входящих в неё файлов.
Рекурсивный алгоритм.
Спасибо!
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.09.2019, 07:38
Ответы с готовыми решениями:

Нужно переделать алгоритм вычисления CRC32 табличным способом
Привет всем. Предисловие. Есть промышленное изделие, в котором надо программно считать CRC32 для...

Рекурсивный алгоритм
Даны натуральные числа "N" и "M" надо решить с помощью с++ не могу переставить с этим кодом с++...

Рекурсивный алгоритм
Доброго времени суток #include <iostream> #include <cmath> using namespace std; float rec(int...

Рекурсивный алгоритм
помогите пожалуйста Представить в рекурсивный алгоритм Цикл пока ((proverka=1) и (k>1) ) ...

12
6727 / 4530 / 1835
Регистрация: 07.05.2019
Сообщений: 13,715
Записей в блоге: 1
02.09.2019, 20:41 2
Цитата Сообщение от vasadisim Посмотреть сообщение
Может кто-нибудь поделиться алгоритмом для подсчёта контрольной суммы директории и входящих в неё файлов.
А что у тебя не получается - пробежаться по всем файлам или посчитать контрольную сумму?
0
1 / 1 / 0
Регистрация: 19.12.2011
Сообщений: 95
02.09.2019, 20:47  [ТС] 3
Алгоритм сам есть, работает, но он только на один файл. Не получается пробежаться по всем файлам и директориям
0
6727 / 4530 / 1835
Регистрация: 07.05.2019
Сообщений: 13,715
Записей в блоге: 1
02.09.2019, 20:48 4
Цитата Сообщение от vasadisim Посмотреть сообщение
Алгоритм сам есть, работает, но он только на один файл. Не получается пробежаться по всем файлам и директориям
Покажи код
0
1 / 1 / 0
Регистрация: 19.12.2011
Сообщений: 95
03.09.2019, 08:54  [ТС] 5
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#define BUFF_SIZE  1024
unsigned char pBuf[ BUFF_SIZE];
 
static uint32_t crc32_tab[] = {
        0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f,
        0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
        0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2,
        0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
        0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
        0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
        0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c,
        0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
        0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423,
        0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
        0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106,
        0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
        0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d,
        0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
        0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
        0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
        0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7,
        0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
        0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa,
        0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
        0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81,
        0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
        0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84,
        0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
        0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
        0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
        0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e,
        0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
        0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55,
        0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
        0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28,
        0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
        0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f,
        0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
        0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
        0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
        0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69,
        0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
        0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc,
        0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
        0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693,
        0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
        0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d
};
 
/*! Алгоритм расчёта контрольной суммы CRC-32 */
uint32_t crc32( uint32_t crc, const void *buf, size_t size)
{
    const uint8_t *p;
 
    p = ( unsigned char*)buf;
    crc = crc ^ ~0U;
 
    while ( size--)
        crc = crc32_tab[(crc ^ *p++) & 0xFF] ^ (crc >> 8);
 
    return crc ^ ~0U;
}
 
/*! Функция проверки существования файла и получения контрольной суммы CRC32
 ** \return 0 - нет файла, 1 - есть файл */
int8_t read_status_file( uint32_t *crc_32, const char * command)
{
    FILE * service  = NULL;
    uint32_t crc    = 0;
    size_t   nCount = 0;
 
    /*! Открываем поток и передаём команду на выполнение */
    service = fopen( command, "rb");
 
    if( NULL == service)
    {
        return 0;
    }
 
    while( !feof( service) )
    {
        nCount = fread( &pBuf, sizeof( char), BUFF_SIZE, service);
 
        if ( 0 == nCount)
        {
            break;
        }
        else
        {
            crc = crc32( crc, &pBuf, nCount);
 
            *crc_32 = crc;
        }
    }
 
    fclose( service);
 
    return 1;
}
 
/*! Получить контрольную сумму файла
 ** \return 0 - нет файла */
uint32_t ServiceGet_CRC32( const char * command)
{
    uint32_t service_crc32 = 0;
 
    if ( read_status_file( &service_crc32, command) == 1)
        return service_crc32;
 
    return 0;
}
0
6727 / 4530 / 1835
Регистрация: 07.05.2019
Сообщений: 13,715
Записей в блоге: 1
03.09.2019, 09:03 6
vasadisim,
C++
1
2
3
4
5
6
7
8
9
#include <filesystem>
.........................
for (auto &item: std::filesystem::recursive_directory_iterator(L"C:\\Temp"))
    if (!item.is_directory())
    {
        std::cout << item.path() << std::endl;
        std::ifstream in(item.path());
.............................
    }
0
1 / 1 / 0
Регистрация: 19.12.2011
Сообщений: 95
03.09.2019, 16:12  [ТС] 7
Не пойдёт надо под 11 стандарт
0
6727 / 4530 / 1835
Регистрация: 07.05.2019
Сообщений: 13,715
Записей в блоге: 1
03.09.2019, 16:23 8
Цитата Сообщение от vasadisim Посмотреть сообщение
Не пойдёт надо под 11 стандарт
Какой версии у тебя компилятор?
0
1 / 1 / 0
Регистрация: 19.12.2011
Сообщений: 95
03.09.2019, 18:21  [ТС] 9
4.8
0
6727 / 4530 / 1835
Регистрация: 07.05.2019
Сообщений: 13,715
Записей в блоге: 1
03.09.2019, 18:23 10
Цитата Сообщение от vasadisim Посмотреть сообщение
4.8
Зачем тебе такой старый? Сейчас уже 9-я версия, поставь посвежее
0
1 / 1 / 0
Регистрация: 19.12.2011
Сообщений: 95
03.09.2019, 19:58  [ТС] 11
Железка не тянет
0
6727 / 4530 / 1835
Регистрация: 07.05.2019
Сообщений: 13,715
Записей в блоге: 1
03.09.2019, 20:51 12
Цитата Сообщение от vasadisim Посмотреть сообщение
Железка не тянет
Да ладно. Установи максимальный, который "тянет".
0
1 / 1 / 0
Регистрация: 19.12.2011
Сообщений: 95
04.09.2019, 07:48  [ТС] 13
Мне нужно под данную версию компилятора, если решения нет, то буду искать
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.09.2019, 07:48

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Рекурсивный алгоритм:
Сколько символов &quot;звездочка&quot; будет напечатано на экране при выполнении вызова F(6)? ...

рекурсивный алгоритм
Уважаемые программисты! Есть задача: разработать рекурсивный алгоритм на с++ для нахождения самого...

Рекурсивный алгоритм
Ребят, подскажите,пожалуйста,в чём ошибка,не могу получить значения P(r)?

Рекурсивный алгоритм
Добрый день, немог бы мне кто нибудь пожалуйста объяснить как работает следующий алгоритм. Заранее...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.