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

Алгоритм вычисления CRC-8 - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вывести только те слова сообщения, которые встречаются в нем ровно один раз http://www.cyberforum.ru/cpp-beginners/thread1099129.html
Дано осмысленное текстовое сообщение (т.е. алфавитно-цифровая информация, разделенная пробелами и знаками препинани, в конце которого ставится точка): Вывести только те слова сообщения, которые встречаются в нем ровно один раз. Помогите с кодом.
C++ Чтение и сравнение символов из файла без использования массива Здравствуйте, подскажите, как можно реализовать посимвольное чтение 2-х (3-х) файлов, при котором символ из 1-го файла сравнивается с символом из 2-го, не используя массивы. http://www.cyberforum.ru/cpp-beginners/thread1099124.html
C++ Создать вектор, содержащий несколько объектов типа данной структуры
Здравствуйте, прошу помощи в создании вектора структур, т.е вот структура : struct MemoryBlock { size_t offset; size_t size; }; и мне надо создать вектор содержащий несколько объектов типа данной структуры, т.е :
C++ В одномерном массиве, состоящем из n вещественных элементов, вычислить количество отрицательных элементов массива
1)количество отрицательных элементов массива; 2)сумму модулей элементов массива, расположенных после минимального по модулю элемента. Заменить все отрицательные элементы массива их квадратами и упорядочить элементы массива по возрастанию. подскажите пожалуйста как делать:))
C++ error LNK2019: ссылка на неразрешенный внешний символ. Maya API http://www.cyberforum.ru/cpp-beginners/thread1099081.html
Всем привет, есть ошибка с которой никак не получается справится. Код верен с уверенностью на 99%. Ругается всего на одну строчку определенного класса, библиотеки все подключены. Попробовал код с офф сайта с примером это же класса, тоже самое. В чем может быть причина? На что ошибка: MTime startFrame; startFrame = MAnimControl::minTime(); Ошибка моего кода:
C++ Усовершенствование кода Добрый вечер форумчане. Только вхожу в C++ и объектно-ориентированное программирование на нём, хочется учиться сразу писать правильно. В общем накатал следующее: два класса, книга(Book) и библиотека(Library). Библиотека инициализируется 10-ю книгами, нужно было предусмотреть возможность поиска по полю и сортировку. Хотелось бы услышать советов по улучшению кода (без сильных извращений) и... подробнее

Показать сообщение отдельно
AndreyHABL
0 / 0 / 0
Регистрация: 20.09.2016
Сообщений: 6
22.09.2016, 06:45     Алгоритм вычисления CRC-8
Пробовал так :

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
const unsigned char Crc8Table[256] = {
    0x00, 0x31, 0x62, 0x53, 0xC4, 0xF5, 0xA6, 0x97,
    0xB9, 0x88, 0xDB, 0xEA, 0x7D, 0x4C, 0x1F, 0x2E,
    0x43, 0x72, 0x21, 0x10, 0x87, 0xB6, 0xE5, 0xD4,
    0xFA, 0xCB, 0x98, 0xA9, 0x3E, 0x0F, 0x5C, 0x6D,
    0x86, 0xB7, 0xE4, 0xD5, 0x42, 0x73, 0x20, 0x11,
    0x3F, 0x0E, 0x5D, 0x6C, 0xFB, 0xCA, 0x99, 0xA8,
    0xC5, 0xF4, 0xA7, 0x96, 0x01, 0x30, 0x63, 0x52,
    0x7C, 0x4D, 0x1E, 0x2F, 0xB8, 0x89, 0xDA, 0xEB,
    0x3D, 0x0C, 0x5F, 0x6E, 0xF9, 0xC8, 0x9B, 0xAA,
    0x84, 0xB5, 0xE6, 0xD7, 0x40, 0x71, 0x22, 0x13,
    0x7E, 0x4F, 0x1C, 0x2D, 0xBA, 0x8B, 0xD8, 0xE9,
    0xC7, 0xF6, 0xA5, 0x94, 0x03, 0x32, 0x61, 0x50,
    0xBB, 0x8A, 0xD9, 0xE8, 0x7F, 0x4E, 0x1D, 0x2C,
    0x02, 0x33, 0x60, 0x51, 0xC6, 0xF7, 0xA4, 0x95,
    0xF8, 0xC9, 0x9A, 0xAB, 0x3C, 0x0D, 0x5E, 0x6F,
    0x41, 0x70, 0x23, 0x12, 0x85, 0xB4, 0xE7, 0xD6,
    0x7A, 0x4B, 0x18, 0x29, 0xBE, 0x8F, 0xDC, 0xED,
    0xC3, 0xF2, 0xA1, 0x90, 0x07, 0x36, 0x65, 0x54,
    0x39, 0x08, 0x5B, 0x6A, 0xFD, 0xCC, 0x9F, 0xAE,
    0x80, 0xB1, 0xE2, 0xD3, 0x44, 0x75, 0x26, 0x17,
    0xFC, 0xCD, 0x9E, 0xAF, 0x38, 0x09, 0x5A, 0x6B,
    0x45, 0x74, 0x27, 0x16, 0x81, 0xB0, 0xE3, 0xD2,
    0xBF, 0x8E, 0xDD, 0xEC, 0x7B, 0x4A, 0x19, 0x28,
    0x06, 0x37, 0x64, 0x55, 0xC2, 0xF3, 0xA0, 0x91,
    0x47, 0x76, 0x25, 0x14, 0x83, 0xB2, 0xE1, 0xD0,
    0xFE, 0xCF, 0x9C, 0xAD, 0x3A, 0x0B, 0x58, 0x69,
    0x04, 0x35, 0x66, 0x57, 0xC0, 0xF1, 0xA2, 0x93,
    0xBD, 0x8C, 0xDF, 0xEE, 0x79, 0x48, 0x1B, 0x2A,
    0xC1, 0xF0, 0xA3, 0x92, 0x05, 0x34, 0x67, 0x56,
    0x78, 0x49, 0x1A, 0x2B, 0xBC, 0x8D, 0xDE, 0xEF,
    0x82, 0xB3, 0xE0, 0xD1, 0x46, 0x77, 0x24, 0x15,
    0x3B, 0x0A, 0x59, 0x68, 0xFF, 0xCE, 0x9D, 0xAC
};
unsigned char Crc8(unsigned char *pcBlock, unsigned char len)
{
    unsigned char crc = 0xFF;
 
    while (len--)
        crc = Crc8Table[crc ^ *pcBlock++];
 
    return crc;
}
 
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
char *pcBlock,len, s;
s=Crc8(pcBlock, len);
    printf( "Summa %x\n ravno %x\n", len, s );
    return 0;
}
выдаёт ошибку, функция взята из википедии.
Алгоритм следующий: есть какое либо сообщение например введенное с клавиатуры цифрами 16777133 (десятичное), далее надо каким то образом взять первые 8 бит с этих данных в нашем случае это 11111111 принять это за адрес в нашем массиве. Данные что по этому адресу (в нашем случае это AC(10101100)) надо ксорить (XOR) со вторыми 8ми битами нашего сообщения (в нашем случае это тоже FF). Полученный результат (в нашем случае это 01010011) это новый адрес в нашем массиве. Данные что по этому адресу (в нашем случае это 2d(00101101)) надо ксорить (XOR) уже с третьими 8ми битами нашего сообщения (в нашем случае это AD). Так должно продолжаться пока не кончится сообщение, в нашем случае оно кончается. Результат и будет контрольная сумма CRC8.
 
Текущее время: 09:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru