Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/56: Рейтинг темы: голосов - 56, средняя оценка - 4.93
Модератор
Эксперт Windows
8736 / 3361 / 244
Регистрация: 25.10.2010
Сообщений: 13,601
1

Про CRC32

13.01.2011, 01:15. Показов 10223. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Народ, кто шарит в CRC, помогите.
Прогу надо доделать или переделать, может у кого-нибудь рабочий вариант есть?
Тестировалось в MV C++ 6. Bulder C++ 6. Borland 3.1. везде одни и теже ошибки
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
#include <stdio.h>
#include <string.h>
#include <conio.h>
void Update_CRC(char in, char *crc)
{
#define POLYNOMIAL 0xEDB88320//Полином 
*crc = *crc^in;
for (int i = 0; i < 256; i++)
{
*crc = i;
for (int j = 0; j < 8; j++)
*crc = *crc & 1 ? (*crc >> 1) ^ POLYNOMIAL : *crc >>1;
}
/*----------------------------------------------------*/
int main()
{//тут требует :, если поставить, глючит в  return 0;
unsigned char crc = 0;
FILE *_open; char ch;
_open=fopen("text.txt","rt");
do
{
ch=getc(_open);
Update_CRC(ch,&crc);
}
while (ch!=EOF);
fclose(_open);
printf("CRC-32 = %u\n", crc);
getch();
return 0;//если убрать, ошибка при линковании
}
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.01.2011, 01:15
Ответы с готовыми решениями:

Crc32 файла
Добрый день! Я писала программку для вычисления crc32 файла с таблицей значений, но преподу она не...

Crc32 библиотека
Здравствуйте! =) Подскажите, пожалуйста, знатоки! Нужно посчитать crc32 файла. Нашла...

Вычислительная сложность CRC32
Какова вычислительная сложность алгоритма CRC32? N^2 или NlogN или еще что-то?

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

2
4772 / 2581 / 893
Регистрация: 29.11.2010
Сообщений: 5,585
13.01.2011, 13:39 2
Форматируйте код по-человечески. Функция не закрыта, main() закрыта дважды. Сложно, что-ли, нормально форматировать код? Тогда подобные ошибки на раз всплывать будут.
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
#include <stdio.h>
#include <string.h>
#include <conio.h>
void Update_CRC(char in, char *crc)
{
#define POLYNOMIAL 0xEDB88320//Полином 
  *crc = *crc^in;
  for (int i = 0; i < 256; i++)
  {
    *crc = i;
    for (int j = 0; j < 8; j++)
      *crc = *crc & 1 ? (*crc >> 1) ^ POLYNOMIAL : *crc >>1;
  }
}
/*----------------------------------------------------*/
int main()
{//тут требует :, если поставить, глючит в  return 0;
  unsigned char crc = 0;
  FILE *_open; char ch;
  _open=fopen("text.txt","rt");
  do {
    ch=getc(_open);
    Update_CRC(ch,&crc);
  }
  while (ch!=EOF);
  fclose(_open);
  printf("CRC-32 = %u\n", crc);
  getch();
  return 0;//если убрать, ошибка при линковании
}
1
Модератор
Эксперт Windows
8736 / 3361 / 244
Регистрация: 25.10.2010
Сообщений: 13,601
18.01.2011, 01:12  [ТС] 3
Прога откорректирована
Канает в Builder C++6 на все 100%, в MVisual выдает ошибку, ну а в Borland 3.1. компильните, увидите сами, хотя в Borland 3.1. вроде бы все .exe 16-бит(CRC16) или я ошибаюсь?!
Пример расчёта Crc32 в Builder C++6
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
/*Программа расчёта Crc32 для файлов.txt*/
#include <stdio.h>//необходимо для printf
#include <conio.h>//необходимо для getch
#include <string.h>//необходимо для strlen
#define FNAME "text.txt"//макрос(метка)
/*Описываем функцию расчёта Crc32
с применением полинома EDB88320UL=
x^32 + x^26 + x^23 + x^22 + x^16 + x^12 + x^11
+ x^10 + x^8 + x^7 + x^5 + x^4 + x^2 + x + 1
*/
unsigned long Crc32(unsigned char *buf, unsigned long len)
{
unsigned long crc_table[256];
unsigned long crc;
for (int i = 0; i < 256; i++)
{
crc = i;
for (int j = 0; j < 8; j++)
crc = crc & 1 ? (crc >> 1) ^ 0xEDB88320UL : crc >> 1;
crc_table[i] = crc;
};
crc = 0xFFFFFFFFUL;
while (len--)
crc = crc_table[(crc ^ *buf++) & 0xFF] ^ (crc >> 8);
return crc ^ 0xFFFFFFFFUL; //конец функции
};
 
//открываем файл для обработки
int main()
{
char buf[4096];
int len;
unsigned long Crc32(unsigned char *buf, unsigned long len);
FILE *f = fopen("text.txt", "rt");//Открыли файл для чтения
if ((f = fopen("text.txt", "rt"))==NULL)//Если файл невозможно открыть,
{
printf ("Error = Nevozmozchno otcrjt' fail");//то выдаём сообщение
getch();
return 0;//и выходим из программы
}
fgets(buf, sizeof(buf), f);
len = strlen(buf);
 
//Вывод Crc32
printf("CRC-32 = %p\n", Crc32(buf,len));//Тут MVisual выдает ошибку
fclose(f);//Файл закрыли
getch();  //задержка программы
return 0;
}
0
18.01.2011, 01:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.01.2011, 01:12
Помогаю со студенческими работами здесь

Расчет CRC32 файла
Не могу найти рабочий вариант расчета CRC32 файла для C++Builder 10 Seattle. Хотел использовать...

Ускорить выполнение расчета CRC32
Доброе время суток! Написал кусок кода который считает контрольную сумму папки, проблема в том...

CRC32.DLL для PEiD v0.95
Уважаемые форумчане прошу вашей помощи в известной программе PEiD v0.95 есть плагин CRC32.DLL ...

Русские буквы в именах файлов меняют CRC32
Есть консольное приложение на VC++ из состава NET 2003. Вычисляется CRC32 имен файлов каталога...

CRC32 C++. Не могу заставить работать готовый код
Добрый день. Нашел вот такую ссылку:...

Как вычисляется CRC32 в exe файле по адресу PE header + 0x8
Работаю под Windows 7 64x + Visual Studio 2010 Если считать в бинарном виде exe-файл в массив и...


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

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