Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Инверсное побитовое суммирование байт посылки

8.7K
13 октября 2007 года
Yellow Raven
15 / / 04.04.2005
Доброго времени суток.
Не подскажет ли многоуважаемый олл, решение следующей проблемы. Необходимо сформировать посылку не более 9 байт (массив char'ов), содержащий команду внешнего устройства. Последний байт посылки должен содержать контрольную сумму, которая является "инверсным значением результата побитного суммирования всех байт посылки" (цитата из спецификации заказчика). Проблема в том, как определить эту контрольную сумму.

Заранее благодарен.
551
13 октября 2007 года
Pavia
357 / / 22.04.2004
Тому кто писал эту строчку руки надо оторвать.

Обыкновенная чек сумма только инфертированная.

Для проверки. Инвертируешь последнее число. Суммируешь все 9 байт если 0 то чек сумма правельная.

Для рассчета чек контрольной суммы. Считаем сумму 8 байт потом из 0 (256) вычитаем полученную сумму и инвертируем.

Инвертированное число - в котором обратный порядок бит.
534
13 октября 2007 года
HarryAxe
448 / / 19.01.2006
По-моему, нихрена не так.
 
Код:
int count = 9;
    int sum = data[0];
    for (int i = 1; i < count - 1; i++)
    {
        sum ^= data;
    }

    data[count - 1] = ~sum;

По крайней мере, этот код в точности соответствует формулировке задания, если под "побитовой суммой" подразумевалось "сложение по модулю 2".
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог