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

Контрольная сумма последовательности байтов - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Сложно найти ошибку отладчиком http://www.cyberforum.ru/cpp-beginners/thread727412.html
Здравствуйте, столкнулся с такой проблемой, в курсовой вылетает иногда ошибка list iterator not dereferencable Понятно, что это итератор вероятно вышел за границы контейнера. Причём через раз всё прорабатывает нормально (присутствует рандом))). А в отладчике, как известно, место такой ошибки не показывает. А пробежать по всему коду не реально ( много всяких циклов ) Так вот можно ли...
C++ переделать для комплексных чисел как? Есть вещественные. есть программа для вещественных чисел,и её надо переделать для комплексных чисел а я не знаю как это намутит кто поможет? #include"stdafx.h" #include <stdio.h> #include <stdlib.h> #include<iostream> #include"time.h" http://www.cyberforum.ru/cpp-beginners/thread727386.html
Информационная система фитнес-клуба C++
помогите сделать программу на СИ++ "Информационная система фитнес-клуба" ПОЖАЛУЙСТА
логический квадрат на C++ C++
По математичекой логике надо написать логический квадрат на C++))) помогите кто может)
C++ Разработка класса http://www.cyberforum.ru/cpp-beginners/thread727375.html
Разработайте класс объектов типа «текстовые файлы на жестком диске, которые способны отображать своё содержимое на экране». Вообще не понимаю что требуется, поясните и приведите пример пожалуйста.
C++ непонятен кусочек кода Вот функция равномерного распределинея чисел. int x1=time(NULL)*16331; int rand_d(int t) { float r; int da=0, db=t, m=97, а=9, rr; float q=x1%m; r=q/m; x1=a*x1; if (r<0) {r=-1*r;}; подробнее

Показать сообщение отдельно
Ptomaine
 Аватар для Ptomaine
13 / 13 / 0
Регистрация: 22.10.2011
Сообщений: 35
11.12.2012, 17:59     Контрольная сумма последовательности байтов
Цитата Сообщение от Antee Посмотреть сообщение
как высчитывать эту самую контрольную сумму?
Вам же объяснили уже, что существует несколько алгоритмов для вычисления контрольных сумм некоторой последовательности чисел. Каждый алгоритм используется, по своей эффективности, для разных задач. В Вашем случае нужно знать, какой алгоритм имел ввиду Ваш преподаватель. Осмелюсь предположить, что скорее всего, это CRC32 - простая контрольная сумма.

Вот пример из Wikipedia от сюда:
http://ru.wikipedia.org/wiki/%D0%A6%...BA%D0%BE%D0%B4

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
#include <stddef.h>
#include <stdint.h>
/*
  Name  : CRC-32
  Poly  : 0x04C11DB7    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
  Init  : 0xFFFFFFFF
  Revert: true
  XorOut: 0xFFFFFFFF
  Check : 0xCBF43926 ("123456789")
  MaxLen: 268 435 455 байт (2 147 483 647 бит) - обнаружение
   одинарных, двойных, пакетных и всех нечетных ошибок
*/
uint_least32_t Crc32(unsigned char *buf, size_t len)
{
    uint_least32_t crc_table[256];
    uint_least32_t crc; int i, j;
 
    for (i = 0; i < 256; i++)
    {
        crc = i;
        for (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;
}
Добавлено через 14 минут
0x10 - у вас ошибка переполнения в коде. Накопитель checksum и функция сумматор должны оперировать типом, как минимум unsigned long long, а не тем же типом, что и входные данные. Представьте, что все входные числа имеют максимальное для unsigned значения - простая сумма будет некорректна. К тому же, ваш "алгоритм" не выполняет главной цели - он не контролирует изменение данных, как минимум от перестановки чисел местами.
 
Текущее время: 01:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru