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

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 27, средняя оценка - 4.67
Persk
Модератор
Эксперт Windows
7349 / 3186 / 195
Регистрация: 25.10.2010
Сообщений: 12,794
#1

Про CRC32 - C++

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

Народ, кто шарит в 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;//если убрать, ошибка при линковании
}
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.01.2011, 01:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Про CRC32 (C++):

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

Про видео и про событие формы) - C++ Builder
Народ, у мня тут два вопросика есть. Надеюсь что кто-то знает ответы) Делаю воспроизведение видео, на панели. Видео не отображается, а...

2 вопроса про цикл и про FileCreate - C++ Builder
1.При выполнении прога зависает: int count = 1; AnsiString myF; while(FileExists(&quot;files\\file_1&quot;))count++; ...

Про указатели - C++ Builder
Разбираюсь с логикой работы указателей. По определению, это адрес начала области памяти, в которой расположен объект, на который ссылается...

про TEdit - C++ Builder
Можно ли как-то запретить изменять часть текста, который изначально введён в Edit. Т.е., к примеру, изначально есть: MyFile.txt - нужно,...

Про классы - C++ Builder
Здравствуйте уважаемые программисты. Возникли некоторые вопросы по классам. Есть код: ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
lemegeton
2923 / 1352 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
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;//если убрать, ошибка при линковании
}
Persk
Модератор
Эксперт Windows
7349 / 3186 / 195
Регистрация: 25.10.2010
Сообщений: 12,794
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;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.01.2011, 01:12
Привет! Вот еще темы с ответами:

Про потоки - C++ Builder
Если я к проге приделал два потока (Thread), один другому не будет мешать? Просто когда я в проге запускаю один поток, все норм.. как...

про OnKeyDown - C++ Builder
Как использовать 2 клавиши одновременно тоетсь if(Key==VK_LEFT&amp;&amp;Key==VK_UP) так не работает, есть у кого варианты???

про Edit - C++ Builder
Хотел узнать как можно в Edit одновременно через запятую написать значения в x и y....

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


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

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

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